我在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
是它的属性,对吗?你知道吗
“Emily”不是由ceo = CEO("Emily")
分配给参数other
,而“Steve”不是由emp = Employee("Steve")
分配给name
吗?怎么能这样用呢?你知道吗
类属性
other.name
是作为参数传递给greet()
方法的other
参数的任何类实例的name
属性。你知道吗扩展示例
进一步继承说明(编辑)
CEO
继承由Employee
定义的所有内容(如name
属性),但可以更改内容(如更改greet()
方法)。你知道吗事情是这样的:
“Emily”被分配给
CEO
类的name
属性,当该类的实例被创建为ceo
。†当
Employee
类的实例被创建为emp
时,name
类的name
属性被分配给Employee
在实例的
greet()
调用中,整个其他类实例通过该方法的other
参数传递给它。你知道吗这将所有的
ceo
传递到emp.greet()
,这样emp.greet()
就可以从ceo
访问一些东西,在本例中,就是ceo
的name
。对
ceo
实例重复greet()
调用我希望这是清楚的,read about and play和一些other examples类。你知道吗
†:这就是
__init__()
方法的用途。__init__()
可以接受任何参数、赋值或运行任何代码。每当创建类的实例时都会调用它。相关问题 更多 >
编程相关推荐