如何创建由类对象组成的元组?

时间:2016-07-22 13:59:25

标签: python python-2.7 tuples

这个问题适用于Python 2.7版。例如,如果我有以下类:

class Example:
    def __init__(self, a, b):
        self.a = a
        self.b = b
object = Example("x", "y")
t = tuple(object)

执行上面的代码后,我得到TypeError: iteration over non-sequence,因为我只能在元组内存储对象的单个变量,而不是对象本身。我的问题是,有一个简单的解决方案来存储元组中的类对象,tuple = (o1, o2, o3) o1, o2 and o3是对象吗?

2 个答案:

答案 0 :(得分:2)

您不必在对象上调用tuple来执行此操作:

obj = Example("x", "y")
t = (obj,) # one item tuple

小心不要使用名称object来隐藏内置object类。

创建包含多个项目的元组:

t = (obj1, obj2, obj3)

请注意,括号仅用于分组,删除它们不会产生任何影响。

答案 1 :(得分:1)

你的问题与元组元素的类型无关,而是与单项元组有关。来自documentation

  

一个特殊的问题是构造包含0或1个项目的元组:语法有一些额外的怪癖来适应这些。空元组由一对空括号构成;通过使用逗号跟随值来构造具有一个项目的元组(仅在括号中包含单个值)。

请注意以下事项:

In [1]: a = (1)

In [2]: type(a)
Out[2]: int

In [3]: a = (1, )

In [4]: type(a)
Out[4]: tuple

In [5]: a = 1, 

In [6]: type(a)
Out[6]: tuple