Yar*_*rin 2 python inheritance initialization
我有一个具有2级继承的类方案.我的期望是每个类构造函数都会运行 - 然而中级类构造函数似乎永远不会被击中.这里缺少什么?
class Base(object):
def __init__(self):
print "BASE"
class Next(Base):
def __init__(self):
super(Base, self).__init__()
print "NEXT"
class Final(Next):
def __init__(self):
super(Next, self).__init__()
print "FINAL"
f = Final()
Run Code Online (Sandbox Code Playgroud)
输出:
基地
决赛
为什么"NEXT"不打印?
Amb*_*ber 10
你应该super()用当前的类调用,而不是父类.
class Base(object):
def __init__(self):
super(Base, self).__init__()
print "BASE"
class Next(Base):
def __init__(self):
super(Next, self).__init__()
print "NEXT"
class Final(Next):
def __init__(self):
super(Final, self).__init__()
print "FINAL"
f = Final()
Run Code Online (Sandbox Code Playgroud)
乍一看,这似乎是多余的("为什么它不能从类中获取self?") - 但请记住,在创建时self,这些__init__方法都会传递给所有这三个方法f,并且self始终是类Final.因此,您必须传递super()您希望它找到父类的类.
| 归档时间: |
|
| 查看次数: |
1389 次 |
| 最近记录: |