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

2024-09-29 22:23:36 发布

您现在位置: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))

Tags: 方法selfnumpy列表objectnameszeros成员
1条回答
网友
1楼 · 发布于 2024-09-29 22:23:36

我会用元组:

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

为什么是元组:

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

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

相关问题 更多 >

    热门问题