【发布时间】:2020-06-12 13:30:54
【问题描述】:
假设我有以下代码sn-p。
class Parent():
def __init__(self):
self.where = 'parent'
def show(self):
print("Inside Parent", self.where)
class Child(Parent):
def __init__(self):
self.where = 'child'
super(Child, self).show()
self.show()
def show(self):
print("Inside Child", self.where)
# Driver's code
obj = Child()
但是输出是
Inside Parent, child
Inside Child, child
我希望输出完全是(希望先打印父级)
Inside Parent, parent
Inside Child, child
我怎样才能实现它?基本上是在子类中调用父类,父类应该使用自己的实例变量。
【问题讨论】:
-
如果您希望 self.where 神奇地成为父母的 show() 中的“父母”,而在孩子的 show() 中查找时,您不能这样做,因为 @987654324 @ 是一个对象,具有一个属性
where。没有两个不同的对象,父对象和子对象。也许您可以进一步编辑您的问题:您真正想要实现什么? -
如果您希望实例属性完全独立于 Parent 和 Child,请将其重命名为
__where。前导双下划线会导致名称根据访问它的类而被破坏:_Parent__where来自 Parent,_Child__where来自 Child。
标签: python python-3.x oop inheritance