这个问题适用于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
是对象吗?
答案 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