Python嵌套内部类实例如何访问外层父类的实例属性
解决方案
Python的嵌套类不存在默认的外层类实例引用,需要手动把Parent实例传给Child实例才能访问对应的属性,修改方案如下:
修改后的完整代码
class Parent: def __init__(self) : self.name = "toto" # 初始化Child时传入当前Parent实例self self.enfant = self.Child(self) class Child: def __init__(self, parent) : self.child_name="tata" # 存储外层Parent实例为属性 self.parent = parent def affiche(self): # 访问存储的外层实例的name属性 print(self.parent.name)
测试调用
p = Parent() p.enfant.affiche() # 输出:toto
原理说明
- Python的嵌套类仅为定义层级的嵌套,不会像Java非静态内部类一样自动持有外层类的实例引用
- 手动传入外层实例是最通用的实现方式,无额外语法依赖,可读性和兼容性最好
内容的提问来源于stack exchange,提问作者Rémi
相关产品推荐
相关产品推荐

