在许多类属性上使用属性

时间:2017-01-23 17:34:17

标签: python oop python-decorators

我有两个具有许多属性的类,除了一个之外的所有类都应具有类似的属性函数。我宁愿避免为所有属性手动编写这些属性,因为这将是繁琐的,并将迫使我对我添加到类中的每个属性进行跟踪。另外,我需要为多个班级做这件事。

我将在生成my_container中的对象后使用它。 以下是我想要解决的案例的简化示例。

def my_class:            

  @property
  def a1(self):
    return self.my_container._a1
    ...
  @property
  def a10(self):
    return self.my_container._a10

1 个答案:

答案 0 :(得分:0)

对于遵循特定模式的一系列属性,我使用__getattr__钩子:

def __getattr__(self, name):
    # translate a\d names into _a\d
    if name.startswith('a') and name[1:].isdigit():
        return getattr(self, '_' + name)

这假设直接设置 这些属性并不容易(因此添加a0而不是_a0),例如当你还有一个相应的__setattr__来处理关于设置这些相同属性的门控或转换。