代码之家  ›  专栏  ›  技术社区  ›  Htechno

在方法中使用Python property()

  •  2
  • Htechno  · 技术社区  · 15 年前

    假设您了解Python内置属性: http://docs.python.org/library/functions.html#property

    def alpha(self, beta):
      self.x = property(beta)
    

    谢谢。

    2 回复  |  直到 15 年前
        1
  •  4
  •   Thomas Wouters    15 年前

    属性使用 描述符协议 类对象 . 属性对象必须存储在类属性中。不能基于每个实例“重写”它。

    class C(object):
        _default_x = 5
        _x = None
        @property
        def x(self):
            return self._x or self._default_x
        def alpha(self, beta):
            self._x = beta
    
        2
  •  1
  •   Daenyth    15 年前

    在这种情况下,你需要做的就是 alpha() self.x = beta . 要为属性实现getter和setter时,请使用属性,例如:

    class Foo(object):
        @property
        def foo(self):
            return self._dblookup('foo')
    
        @foo.setter
        def foo(self, value):
            self._dbwrite('foo', value)
    

    然后才能做到

    f = Foo()
    f.foo
    f.foo = bar