【发布时间】:2015-11-23 22:27:13
【问题描述】:
我想知道为什么下面会失败;基本上,继承的子类 (SubClass) 似乎无法访问它所继承的超类 (SuperClass) 中的属性。
顺便说一下,下面的所有三个文件都在同一个目录中,为了完整起见,我使用的是 Python3。
有什么想法吗?我认为这是非常简单的事情。谢谢!
超类(./super_class.py 中的SuperClass) ...
class SuperClass(object):
def __init__(self):
self.varSuper = 'varSuper_value'
继承的子类(./sub_class.py中的SubClass) ...
from super_class import SuperClass
class SubClass(SuperClass):
def __init__(self):
super(SuperClass, self).__init__()
self.varSub = 'varSub_value'
驱动程序/测试程序脚本(./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"
例外...
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'
【问题讨论】:
-
你应该在 python 3 中不带参数地调用
super() -
或使用 正确 类型 -
super(SubClass, self) -
感谢 Sebastian 强调 Python2 和 Python-3 使用 super() 的区别。
标签: python inheritance subclass superclass