考虑这些课程
class Foo(object):
def __init__(self, owner):
self.owner = owner
self.a = None
self.b = []
object = Foo(mike)
每小时,我需要检查Foo是否更新(object.a或object.b已更改) 我该怎么办?
我是否需要创建一个新的对象object2 = Foo(mike)和parse属性来与对象进行比较,将差异放入列表中还是有pythonic方式来实现它?
如果创建两个对象,解析它们以构建2个列表并比较它们是个好主意吗?
答案 0 :(得分:0)
如果您遇到此问题,请勿允许任何内容直接更改属性。 使用方法(例如add_b(self,value),set_a(self,value)),您可以在其中控制正在发生的事情。
尝试使用properties。
E.g。
class Foo(object):
__owner = None
__changed = False
def __init__(self, owner):
self.__owner = owner
def get_owner(self):
return self.__owner
def set_owner(self, owner):
old_owner = self.__owner
if owner != old_owner:
self.__changed = True
self.__owner = owner
owner = property(get_owner, set_owner)
@property
def changed(self):
return self.__changed
f = Foo('bar')
print f.owner # bar
f.owner = 'bar2'
print f.owner # bar2
print f.changed # True