【发布时间】:2018-03-21 23:03:46
【问题描述】:
我无法理解继承中实例变量的逻辑。 这是我用 cmets 解释我如何理解它的行为的(简化的)代码:
class Main(object):
def __init__(self):
self.p = Parent() # self.parameter = []
self.c = Child() # self.parameter = []
def run(self):
self.p.setting() # assigning value to self.parameter
self.c.getting()
class Parent(object):
def __init__(self):
self.parameter = []
def setting(self):
self.parameter = [1, 2, 3]
class Child(Parent):
# not redefining __init__, so Parent __init__ is called
def getting(self):
# value was assigned to self.parameter in setting method,
# called before getting
print self.parameter
Main().run()
getting 打印 [],而不是我预期的 [1, 2, 3]。为什么会这样?由于Child 与Parent 共享__init__,所以在开始时self.parameter = [] 两者都是,但是为什么在Child().__init__ 被调用很久之后它仍然是[]?我应该怎么做才能更改getting 中的self.parameter 值?
【问题讨论】:
-
Python 不是 Java;并非所有东西都必须是一个类。摆脱
Main。
标签: python python-2.7 inheritance instance-variables