-3

考虑这些类

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) 并解析属性以与对象进行比较,将差异放入列表中,还是有 pythonic 方式来做到这一点?

如果创建两个对象,解析它们以构建 2 个列表并比较它们是个好主意吗?

4

1 回答 1

0

如果你有这个问题,不要让任何东西直接改变属性。改用方法(例如 add_b(self, value)、set_a(self, value)),您可以在其中控制正在发生的事情。

尝试使用属性

例如

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
于 2013-10-10T12:37:52.790 回答