我有 A 类及其内部类 B
它们位于不同的文件中(假设 a.py 和 b.py)
我需要在 B 类的方法中更改 A.x 而不发送“self”。 IE。 self.inner = B() 而不是 self.inner = B(self)。我无法发送“self”,因为 A 类位于生成的文件中,我不能触及。
我该怎么做?
如果我可以发送自己,我就会这样做
#a.py
from b import B
class A():
def __init__(self):
self.x = 1
#this would be self.inner = B() instead
self.inner = B(self)
example = A()
print(example.x)
#b.py
class B():
def __init__(self, parent):
self.change(parent)
def change(self, parent):
parent.x = 2
最佳答案
您可以尝试使用 inspect
模块(尽管正如 @Slam 所建议的那样,这远非推荐):
import inspect
class B():
def __init__(self):
inspect.currentframe().f_back.f_locals["self"].x = 2
class A():
def __init__(self):
self.x = 1
self.inner = B()
def print_x(self):
print(self.x)
a = A()
a.print_x()
关于python - 如何在不发送 self 的情况下从内部类更改外部类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54406199/