gpt4 book ai didi

python - Python类中参数的使用

转载 作者:太空宇宙 更新时间:2023-11-03 11:28:00 26 4
gpt4 key购买 nike

我在Codecademy学习Python的时候遇到了这个问题,代码如下:

class Employee(object):
def __init__(self, name):
self.name = name
def greet(self, other):
print "Hello, %s" % other.name

class CEO(Employee):
def greet(self, other):
print "Get back to work, %s!" % other.name

ceo = CEO("Emily")
emp = Employee("Steve")
emp.greet(ceo)
ceo.greet(emp)

我想知道 other.name 在这里是什么意思?

self.name = name可以解释为实例对象的成员变量self.name被设置为等于name,所以我们可以说 self 是一个实例,name 是它的属性,对吧?

并且,不是 ceo = CEO("Emily") 将“Emily”分配给参数 other 并且将“Steve”分配给 名称emp = Employee("Steve")?怎么可以这么用?

最佳答案

类属性

other.name 是作为参数传递给 other 参数的任何类实例的 name 属性greet() 方法。

扩展示例

class Employee(object):
def __init__(self, name):
self.name = name
def greet(self, other):
print "Hello, %s" % other.name

class CEO(Employee):
def greet(self, other):
print "Get back to work, %s!" % other.name

ceo = CEO("Emily")
emp = Employee("Steve")

print emp.name, 'greets', ceo.name
emp.greet(ceo)
print
print ceo.name, 'greets', emp.name
ceo.greet(emp)

Steve greets Emily
Hello, Emily

Emily greets Steve
Get back to work, Steve!

进一步的继承解释(编辑)

CEO 继承了 Employee 定义的所有内容(如 name 属性),但可以更改内容(如更改 greet( ) 方法)。

事情是这样的:

  1. CEO 类的一个实例被创建为 ceo 时,“Emily”被分配给 CEO 类的 name 属性.

    ceo = CEO("Emily")
  2. Employee 类的实例创建为 emp 时,“Steve”被分配给 employee 类的 name 属性.

    emp = Employee("Steve")
  3. 在实例的 greet() 调用中,整个 other 类实例通过 other 参数传递给它那个方法。

    emp.greet(ceo)

    这会将所有 ceo 传递给 emp.greet(),以便 emp.greet() 可以从 访问某些内容ceo,在本例中为 ceoname

  4. ceo 实例重复调用 greet()

    ceo.greets(emp)

我希望这很清楚,read about and play与一些other examples类。


:这就是 __init__() 方法的用途。 __init__() 可以接受任何参数、分配任何内容或运行任何代码。每当创建类的实例时都会调用它。

关于python - Python类中参数的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30002693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com