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


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]

  1. 创建枚举

  1. 其他方法?
-

-根据@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用作基类。

最新更新