class CFT(object):
self.c3prarea = numpy.zeros(shape=(5, 5))
self.c4prarea = numpy.zeros(shape=(5, 5))
self.c5prarea = numpy.zeros(shape=(5, 5))
在上面的课程中,我想将 3 个成员分组在一起,以便我可以迭代它们。最好的方法是什么:
- 创建列表:
ll = [self.c3prarea, self.c4prarea, self.c5prarea]
或
- 创建枚举
或
- 其他方法?
-根据@9000的soln进行编辑,尝试使用命名元组:
self.CFT_names = collections.namedtuple('CFT_names', 'c3prarea c4prarea c5prarea')
self.c3prarea = numpy.zeros(shape=(5, 5))
我会使用元组:
class Foo(object):
def __init__(self):
self.bars = (numpy.zeros(shape=(5, 5)),...) # however many you need
为什么是元组:
- 它是不可变的,您不能错误地删除或添加成员。
- 迭代或使用索引访问很容易。
- 如果将来需要名称,可以透明地升级到
namedtuple
。
此外,这个 3 元组本身可能是一个简单的类,它有自己的方法,不依赖于原始CTF
类的其他部分。如果是这样,值得考虑;可以直接将tuple
用作基类。