Python ::超类中的属性在继承子类中不可用

NYC*_*yes 2 python inheritance subclass superclass

我想知道为什么下面的失败:基本上,继承子类(SubClass)似乎无权访问其继承的超类(SuperClass)中的属性。

顺便说一下,下面的所有三个文件都在同一目录中,为了完整起见,我使用的是Python3。

有任何想法吗?我认为这非常简单。谢谢!

超类(./super_class.py中的SuperClass) ...

class SuperClass(object):

   def __init__(self):
      self.varSuper = 'varSuper_value'
Run Code Online (Sandbox Code Playgroud)

继承的子类(子类./sub_class.py) ...

from super_class import SuperClass

class SubClass(SuperClass):

  def __init__(self):
     super(SuperClass, self).__init__()
     self.varSub = 'varSub_value'
Run Code Online (Sandbox Code Playgroud)

驱动程序/测试脚本(./driver.py) ...

#! /usr/bin/env python3

from sub_class import SubClass

print(SubClass().varSub)    # Works: "varSub_value"
print(SubClass().varSuper)  # Excepts: I expected "varSuper_value"
Run Code Online (Sandbox Code Playgroud)

例外...

user@linux$ ./driver.py
varSub_value                                  <--- GOOD
Traceback (most recent call last):
  File "./driver.py", line 6, in <module>
    print(SubClass().varSuper)                <--- NO GOOD
AttributeError: 'SubClass' object has no attribute 'varSuper'
Run Code Online (Sandbox Code Playgroud)

Cha*_* S. 5

您使用的super()功能错误。您应该使用:

super(SubClass, self).__init__()
Run Code Online (Sandbox Code Playgroud)

或在python3中

super().__init__()
Run Code Online (Sandbox Code Playgroud)

您编写的方式是在父类之后而不是在自己的类之后开始MRO。