在Python2.7中使用'super'的示例

Cia*_*lsh 1 python inheritance super

我试图在python中使用super扩展我的类初始化.在下面的例子中,我想Class A初始化一个参数乘以4,我希望这个参数可以通过继承在B类中使用.然后我想在B中进行另一次初始化以获取相同的参数并将其乘以8.第二次初始化不必在A中可用.

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)
Run Code Online (Sandbox Code Playgroud)

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

这是我第一次使用继承,有人可以建议我做错了吗?

Bor*_*lid 5

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

请注意,我已经将关键字设置为低级class(这使我相信您的代码不是复制粘贴的 - 请求有关您未尝试运行的代码的帮助是个坏主意!),以及object在parens中加入了这个词,将其标记为一个新类型的Python类.后者是惯用的,如果不是绝对必要的话.

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

  • @ user3059024:你真的需要`A类(对象):`作为`A`定义的第一行. (2认同)