我有两个具有许多属性的类,除了一个之外的所有类都应具有类似的属性函数。我宁愿避免为所有属性手动编写这些属性,因为这将是繁琐的,并将迫使我对我添加到类中的每个属性进行跟踪。另外,我需要为多个班级做这件事。
我将在生成my_container中的对象后使用它。 以下是我想要解决的案例的简化示例。
def my_class:
@property
def a1(self):
return self.my_container._a1
...
@property
def a10(self):
return self.my_container._a10
答案 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__
来处理关于设置这些相同属性的门控或转换。