【问题标题】:Create python property function dynamically动态创建python属性函数
【发布时间】:2014-09-01 15:11:00
【问题描述】:

我想动态创建属性方法。

这意味着,例如,我希望第一类 A 与第二类等价。

有什么办法吗?

class A(object):
  def __init__(self):
    self._a = 10
    self.createPropertyMethod(a, self._a, getFunc, setFunc, delFunc)

  def createPropertyMethod(self, name, value, getFunc, setFunc, delFunc)
     #TODO

.

class A(object):
  def __init__(self):
    self._a = 10

  @property
  def a(self):
    return getFunc(self._a)
  @a.setter
  def a(self, value):
    setFunc(self._a, value)
  @a.deleter
  def a(self):
    delFunc(self._a)

【问题讨论】:

    标签: python python-2.7 properties


    【解决方案1】:

    你不能,不是在实例上。 property 对象必须是它所依赖的 descriptor protocol 类的一部分。

    您可以使用__getattr____setattr____delattr__ 挂钩来动态代理属性访问。

    【讨论】:

    • 在课堂上创建装饰器是否能达到@asleea 想要实现的效果?好吧,我对新风格的课程不太满意。
    • @kingsdeb:类装饰器会改变类,而不是实例。所以,是的,你可以在装饰器中创建 property 对象,将它们添加到类中并让它们工作。
    • @Martin Pieters - 你能给我看一个这样的代码吗?
    • @kingsdeb:不,因为这超出了这个问题的范围。
    猜你喜欢
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    • 2022-06-24
    • 2018-12-10
    相关资源
    最近更新 更多