使用super的代码出错

时间:2014-12-10 02:02:39

标签: python

我不确定为什么下面的代码会导致错误。我只是在基类Option中创建了一个子类Security,并尝试在super.get_description()函数中使用get_description(),这会导致错误。

class Security(object):
    def __init__(self, name, BriefDesc):
        self.name = name
        self.BriefDesc = BriefDesc

    def __str__(self):
        return self.name + ' ' + self.BriefDesc + ': ' + self.get_description()

    def get_description(self):
        return 'no detailed description.'

class Option(Security):
    def __init__(self):
        Security.__init__(self, 'Option', '(Derivative Security)')

    def get_description(self):
        return super.get_description() # Error here when print is executed. I am unsure why

    def study_security(security):
        print security   

print study_security(Option()) # Results in an error

1 个答案:

答案 0 :(得分:1)

您需要调用super并传递正确的参数 1

return super(Option, self).get_description()

以下是documentation for super的链接。


1 但最后一部分仅在Python 2.x中是必需的。在Python 3.x中,您可以这样做:

return super().get_description()