【发布时间】:2019-06-29 03:06:14
【问题描述】:
我希望 Inner 类更改实例化对象 (o) 的属性,在本例中为“some_var”; o.some_var.
我已经尝试在 Google 和 stackoverflow 上搜索有关嵌套类以及内部类如何访问外部类属性的信息。我更改了内部类所采用的参数,例如实例化对象(self),没有效果。
class Outer:
def __init__(self):
self.some_var = 1
self.Inner = Inner()
class Inner:
def print_some_var(self):
print("I'm Inner's method, printing:", self.some_var)
def change_some_var(self, n):
self.some_var = n
o = Outer()
print("Printing directly.", o.some_var)
o.Inner.print_some_var()
o.Inner.change_some_var(5)
o.Inner.print_some_var()
我需要这段代码中的两件事,既基于可以访问外部类的内部类,也基于通过静态调用它(内部类)和更改外部类对象属性(some_var )。喜欢:
- 通过调用 Inner 类来更改 Outer 类对象的 some_var,例如“o.Inner.change_some_var(5)”。
- 通过在实例化对象内部静态调用 Inner 类来打印/读取 Outer 类对象的 some_var,例如“o.Inner.print_some_var()”。
相反,python 解释器向我抛出了一个异常:
Traceback (most recent call last):
File "nestedclasses.py", line 16, in <module>
o.Inner.print_some_var()
File "nestedclasses.py", line 8, in print_some_var
print("I'm Inner's method, printing:", self.some_var)
AttributeError: 'Inner' object has no attribute 'some_var'
【问题讨论】: