gpt4 book ai didi

python - 通知父实例有关属性更改

转载 作者:太空宇宙 更新时间:2023-11-04 10:47:05 25 4
gpt4 key购买 nike

我有这两个类:

class Status(object):
def __init__(self):
self._message = ''

@property
def message(self):
return self._message

@message.setter
def message(self, value):
self._message = value


class Buddy(object):
def __init__(self, name):
self.name = name
self.status = Status()

def status_updated(self):
# this should be called when self.status.message is changed

我这样使用它们:

buddy = Buddy('John')
buddy.status.message = 'Hello world!' # this should call Buddy.status_updated

我希望在修改 Statusmessage 属性时调用 Buddy.status_updated。如何实现?

最佳答案

您必须将引用存储返回给父级; python 值不跟踪它们的存储位置(可以有多个位置引用您的 Status() 实例):

class Status(object):
def __init__(self, parent=None):
self._message = ''
self._parent = parent

@property
def message(self):
return self._message

@message.setter
def message(self, value):
self._message = value
if self._parent is not None:
self._parent.status_updated()


class Buddy(object):
def __init__(self, name):
self.name = name
self.status = Status(self)

def status_updated(self):
# this should be called when self.status.message is changed

关于python - 通知父实例有关属性更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16626323/

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