Python:使用属性get/set在子类函数上运行



我有一个类似于简化设置的设置:

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)

最新更新