在许多 class 属性上使用 属性

Using property on many class attributes

我有两个 class 具有许多属性,除了一个之外的所有属性都应该具有相似的 属性 功能。我更愿意避免为所有属性手动编写这些属性,因为这会很乏味,并且会迫使我对添加到 class 的每个属性进行跟进。另外,我需要做不止一个 class。

生成my_container中的对象后我会用到这个。 下面是我要解决的案例的简化示例。

def my_class:            

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

对于遵循特定模式的一系列属性,我会使用 __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__ 来处理设置这些相同属性时的门控或转换。