inv*_*ass 15 python attributes super
我试图从基类访问变量.这是父类:
class Parent(object):
def __init__(self, value):
self.some_var = value
Run Code Online (Sandbox Code Playgroud)
这是儿童班:
class Child(Parent):
def __init__(self, value):
super(Child, self).__init__(value)
def doSomething(self):
parent_var = super(Child, self).some_var
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试运行此代码:
obj = Child(123)
obj.doSomething()
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
Traceback (most recent call last):
File "test.py", line 13, in <module>
obj.doSomething()
File "test.py", line 10, in doSomething
parent_var = super(Child, self).some_var
AttributeError: 'super' object has no attribute 'some_var'
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?在Python中从基类访问变量的推荐方法是什么?
小智 24
在基类__init__运行之后,派生对象具有在那里设置的属性(例如some_var),因为它self与派生类中的对象完全相同__init__.你可以而且应该只self.some_var在任何地方使用.super用于从基类访问内容,但实例变量(如名称所示)是实例的一部分,而不是该实例类的一部分.
| 归档时间: |
|
| 查看次数: |
28515 次 |
| 最近记录: |