小编dut*_*hie的帖子

我应该使用描述符类还是属性工厂?

假设我有一个课程,我想制作很多类似的"属性风格"属性.例如:

class Foo(object):
    @property
    def foo(self):
        return self._foo

    @foo.setter
    def foo(self, val):
        self.update()
        self._foo = val

    @property
    def bar(self):
        return self._bar

    @bar.setter
    def bar(self, val):
        self.update()
        self._bar = val

    @property
    def baz(self):
        return self._baz

    @baz.setter
    def baz(self, val):
        self.update()
        self._baz = val

    def update(self):
        print "Updating..."
Run Code Online (Sandbox Code Playgroud)

显然,这里有很多重复,并且很好地将其考虑在内.一种方法是创建一个返回属性的函数:

def create_property(var):
    def _setter(self, val):
        self.update()
        setattr(self, '_' + var, val)

    def _getter(self):
        return getattr(self, '_' + var)

    return property(_getter, _setter)

class Foo(object):
    foo = create_property("foo")
    bar = create_property("bar")
    baz = create_property("baz")

    def …
Run Code Online (Sandbox Code Playgroud)

python properties descriptor

5
推荐指数
1
解决办法
540
查看次数

标签 统计

descriptor ×1

properties ×1

python ×1