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)
您使用的super()功能错误。您应该使用:
super(SubClass, self).__init__()
Run Code Online (Sandbox Code Playgroud)
或在python3中
super().__init__()
Run Code Online (Sandbox Code Playgroud)
您编写的方式是在父类之后而不是在自己的类之后开始MRO。