超级功能与结果一起返回



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

最新更新