【发布时间】:2018-03-28 07:49:05
【问题描述】:
在 Python3 中,我假设创建具有父类的类会导致父类被实例化。这段代码表明它不是那样工作的。
class AClass:
def __init__(self):
print("make A")
self.val = True
def f(self):
return self.val
class BClass(AClass):
def __init__(self):
print("make B")
self.val = False
def g(self):
return self.val
b = BClass()
print(b.f())
print(b.g())
输出是
make B
False
False
输出显示AClass.__init__(self) 未被调用,函数f 使用在BClass 中创建的self 值。如果存在AClass 实例,则g 函数将返回True。
我正在学习 Python,我发现这种行为非常违反直觉。我想要的是在继承层次结构的每个级别都有一个self 实例变量。这在 Python3 中不正常吗?如果继承树中有self 实例,方法名称是否会遵循常规继承规则? Python会做其他事情来实现我想要的吗?
【问题讨论】:
-
您应该首先在发布的代码中修复缩进...
-
“我想要的是在继承层次结构的每一层都有一个 self 实例变量。” 这意味着什么?当您实例化一个类时,您会得到 一个 对象,而不是层次结构中的每个类都有一个。
标签: python python-3.x inheritance instance self