i具有以下代码,带有父级Test
和子类MyTest
。从外部,我试图访问父类的方法而不是子类的方法。因此,我期望父类的display
功能。因此,我使用super
功能来实现这一目标。到目前为止,一切都很好。但是,当我尝试将超级函数的返回分配给变量SAD z
时,我看到它打印了我期望的内容,也打印了'None'
。
class Test(object):
def display(self, x):
self.x = x
print self.x
class MyTest(Test):
def someother(self):
print "i am a different method"
def display(self, x):
self.x = x
print "Getting called form MyTest"
a = MyTest()
z = super(type(a), a).display(10)
print z
10
None
我试图理解为什么超级函数与预期值一起返回"无"
您的MyTest.display
方法不包括任何return
语句。因此,暗示return None
。结果,z = super(type(a), a).display(10)
导致None
分配到z
。
您需要在方法中附加return
语句,例如:
def display(self, x):
self.x = x
print "Getting called form MyTest"
return self.x
python中没有明确使用 return
的任何 callable 默认情况下会返回 None
。
因此,要修复只需使用return
而不仅仅是打印:
class Test(object):
def display(self, x):
self.x = x
return self.x