在python中将类成员分组在一起

时间:2015-11-29 04:30:04

标签: python class

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个成员组合在一起,以便我可以迭代它们。最好的方法是什么:

  1. 创建一个列表:ll = [self.c3prarea, self.c4prarea, self.c5prarea]
  2. ,或者

    1. 创建枚举
    2. ,或者

      1. 其他一些方法?
      2. - 编辑基于@ 9000的soln,试图使用命名元组:

        self.CFT_names = collections.namedtuple('CFT_names', 'c3prarea c4prarea c5prarea')
        
        self.c3prarea = numpy.zeros(shape=(5, 5))
        

1 个答案:

答案 0 :(得分:1)

我使用元组:

class Foo(object):
  def __init__(self):
    self.bars = (numpy.zeros(shape=(5, 5)),...)  # however many you need

为什么是元组:

  • 它是不可变的,你不能错误地删除或添加成员。
  • 易于迭代或使用索引访问。
  • 如果将来需要名称,可以透明地升级到namedtuple

此外,这个3元组可能本身就是一个简单的类,它自己的方法不依赖于原始CTF类的其他部分。如果是这样,那值得考虑;您可以直接使用tuple作为基类。