如何从子 class 实例访问父 class 实例属性?
How to access parent class instance attribute from child class instance?
在此示例中如何访问 Parent
的姓名?
class Parent:
def __init__(self) :
self.name = "toto"
self.enfant = self.Child()
class Child:
def __init__(self) :
self.child_name="tata"
def affiche(self):
print(?? Parent.name) # how to display the parent's name ?
你不能像在 Java 中那样做。 Python 中的嵌套 class 是完全独立的 objects。他们在不知道自己 parent 的情况下生活,事实上,当 class 尸体被处决时,他们看不到自己的 parent。
您的问题的解决方案是在 child 中引用 parent(另外,不要打扰嵌套 classes):
class Child:
def __init__(self, parent):
self.child_name = "tata"
self.parent = parent
def affiche(self):
print(self.parent.name)
class Parent:
def __init__(self) :
self.name = "toto"
self.enfants = [Child()]
如果把Child
嵌套到Parent
中,还是照原样写,调用构造函数为self.Child(self)
.
您可能需要查看以下问题以获取更多信息:
- Nested classes' scope?
正如我在 中所说,除了其中一个的定义嵌套在另一个的命名空间中之外,您的两个 class 之间没有特殊关系。为了做你想做的事,你需要明确地“告诉” Child
class 它的 parent 是谁,在构造一个实例时将它作为参数传递 - 和如果以后想在其他方法(如 affiche()
.
中使用它,则需要显式保存该值
我的意思是:
class Parent:
def __init__(self) :
self.name = "toto"
self.enfant = self.Child(self) # Pass self as parent argument.
class Child:
def __init__(self, parent):
self.parent = parent # Remember parent.
self.child_name="tata"
def affiche(self):
print(self.parent.name) # Display the parent's name.
parent = Parent()
parent.enfant.affiche() # -> toto
在此示例中如何访问 Parent
的姓名?
class Parent:
def __init__(self) :
self.name = "toto"
self.enfant = self.Child()
class Child:
def __init__(self) :
self.child_name="tata"
def affiche(self):
print(?? Parent.name) # how to display the parent's name ?
你不能像在 Java 中那样做。 Python 中的嵌套 class 是完全独立的 objects。他们在不知道自己 parent 的情况下生活,事实上,当 class 尸体被处决时,他们看不到自己的 parent。
您的问题的解决方案是在 child 中引用 parent(另外,不要打扰嵌套 classes):
class Child:
def __init__(self, parent):
self.child_name = "tata"
self.parent = parent
def affiche(self):
print(self.parent.name)
class Parent:
def __init__(self) :
self.name = "toto"
self.enfants = [Child()]
如果把Child
嵌套到Parent
中,还是照原样写,调用构造函数为self.Child(self)
.
您可能需要查看以下问题以获取更多信息:
- Nested classes' scope?
正如我在 Child
class 它的 parent 是谁,在构造一个实例时将它作为参数传递 - 和如果以后想在其他方法(如 affiche()
.
我的意思是:
class Parent:
def __init__(self) :
self.name = "toto"
self.enfant = self.Child(self) # Pass self as parent argument.
class Child:
def __init__(self, parent):
self.parent = parent # Remember parent.
self.child_name="tata"
def affiche(self):
print(self.parent.name) # Display the parent's name.
parent = Parent()
parent.enfant.affiche() # -> toto