gpt4 book ai didi

python - 如何在不发送 self 的情况下从内部类更改外部类?

转载 作者:行者123 更新时间:2023-12-01 08:24:10 25 4
gpt4 key购买 nike

我有 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com