为了理解super(),我做了这两个例子,但它们返回相同的结果。你知道吗
这是与super()
class Person1():
def __init__(self, name):
self.name = name
class EmailPerson1(Person1):
def __init__(self, name, email):
super().__init__(name)
self.email = email
bob2 = Person('Dim')
bob = EmailPerson1('Bob Frapples', 'bob@frapples.com')
bob.name
“鲍勃·弗雷普斯”
而这个没有super()
class Person():
def __init__(self, name):
self.name = name
class EmailPerson(Person):
def __init__(self, name, email):
self.name = name
self.email = email
bob2 = Person('Dim')
bob1 = EmailPerson('Bob Frapples', 'bob@frapples.com')
bob1.name
“鲍勃·弗雷普斯”
有什么区别?第一个版本应该使用父类的名称。你知道吗
不同之处在于,您手动复制
Person.__init__
在EmailPerson.__init__
中所做的工作,而不是使用super().__init__
来确保继承的初始值设定项执行它所需要的操作。你知道吗使用
super
,即意思是如果有人更新了
Person
的定义,在Person.__init__
中做了一些额外的工作:您根本不需要更新
EmailPerson
的定义来利用新的更改。你知道吗相关问题 更多 >
编程相关推荐