我有一个类似于简化设置的设置:
class WorkerBee():
def __init__(self):
self.x = 1
self.old_x = None
def update_x(self, val):
self.update_old_x()
self.x = val
def _update_old_x(self):
self.old_x = self.x
class MainClass():
def __init__(self):
self.bee = WorkerBee()
def updated_WorkerBee(self):
print('yay, it was updated')
我理解使用@property
来设置属性的获取集。但在这种情况下,我试图弄清楚如何直接调用WorkerBee
方法(在我的情况下有不止一个……(,它也会触发MainClass.updated_WorkerBee()
In:
main = MainClass()
main.bee.update_x(2)
Out:
yay, it was updated
感谢您的帮助!
您可以向蜜蜂添加对主对象的引用,就像父对象一样:
class WorkerBee:
def __init__(self, main):
self.main = main
self.x = 1
(...)
然后在WorkerBee中的更新方法中使用它,也可以更新main:
def update_x(self, val):
self.update_old_x()
self.x = val
self.main.updated_WorkerBee()
要做到这一点,请在创建主文件时将其传递给蜜蜂:
class MainClass:
def __init__(self):
self.bee = WorkerBee(self)