【发布时间】:2012-11-12 00:53:06
【问题描述】:
我知道没有这样的事情。这就是为什么我正在寻找一些不错的等价物。有这个类:
class MyClass:
a = 5
b = "foo"
c = False
我想将 a 和 b 字段“分组”在一起,以便能够以某种方式仅迭代来自该组的成员。所以最好有某种字段装饰器,比如:
class MyClass:
@bar
a = 5
@bar
b = "foo"
c = False
还有一些像 myDir(MyClass, 'bar') 这样会返回 ('a', 'b') 的函数。
到目前为止,我们有哪些选择? 1. 按特殊约定命名这些字段,例如“a_bar”、“b_bar”——但不幸的是我不能这样做。 2. 将名称列表作为另一个类成员 - 我想让这个分组属性接近属性,所以我不喜欢这种方法。 3.我可以创建从整数和字符串继承的类,并添加另一个基类,如“Group”,然后检查类型,而不是将 5 分配给“a”和“foo”,这样我就必须生成这个类每次我都有新类型,所以我也不喜欢这个解决方案。
还有其他想法吗?
【问题讨论】:
-
我想说#2 是要走的路。这是迄今为止最简单、最不老套的方法。
-
所以我忘了写 - 我想从这个列表中获得一些想法;)
-
“保持这个分组属性接近属性”到底是什么意思?您是指字典的键值存储属性吗?
-
我想把它作为这个属性的属性,而不是整个类的属性。这样我就可以避免在列表中重复属性的名称。
-
@mnowotka 是的,我怀疑。因此,这是一个评论,而不是更长的理由,为什么 #2 是最好的。不过,我是认真的:我认为这是迄今为止你能得到的最好的。
标签: python design-patterns decorator