关于python:使用’super’的示例在Python2.7中

Example using 'super' In Python2.7

本问题已经有最佳答案,请猛点这里访问。

我正在尝试在Python中使用super扩展类初始化。在下面的示例中,我希望Class A初始化一个乘以4的参数,并且希望这个参数通过继承在类B中可用。然后我希望B中的另一个初始化采用相同的参数,并将其乘以8。第二次初始化不必在中可用。

1
2
3
4
5
6
7
8
class A():
    def __init__(self,parameter):
        self.initialize_parameter=4*parameter

class B(A):
    def __init__(self,parameter): #note this parameter is intended to be the same parameter from Class A
        self.another_parameter=parameter*8
        super(B,self).__init__(parameter)

我一直在阅读的文档似乎表明上面的语法是正确的(我认为),但是关于这个主题的文档相当混乱。上面的代码返回TypeError: must be type, not classobj

这是我第一次使用继承,有人能告诉我做错了什么吗?


正确的语法应该是class A(object),而不是Class A()

注意,我都把关键字class放在了较低的大小写中(这让我相信您这里的代码不是复制粘贴的——在您没有尝试运行的代码上请求帮助是一个坏主意!)并在parens中添加了单词object,以将其标记为新类型的python类。后者是惯用的,如果不是严格必要的话。

当我试图按照您编写的代码运行代码时,我得到了SyntaxError: invalid syntax。当我将单词class小写时,在python 2.7上完全没有错误。