我想将一些数据封装到class
中,但会发生一些奇怪的事情:
>>> class Foo:
def __init__(self, value):
print(value)
print(type(value))
self.value = value,
print(self.value)
print(type(self.value))
>>> f = Foo(5)
5
<class 'int'>
(5,)
<class 'tuple'>
为什么要将类型从int
更改为tuple
(在Python 3.3.0,Windows,IDLE中)?
答案 0 :(得分:1)
您正在将其更改为元组:
self.value = value,
该行末尾的逗号表示您正在创建一个以value
作为第一个值的元组。例如:
>>> 3
3
>>> 3,
(3,)
之后self.value
是tuple
而不再是int
。
答案 1 :(得分:0)
由于此行中的逗号:
self.value = value,
上面的代码实际上等同于:
self.value = (value,)
如您所见,它会将self.value
重新分配给以value
作为第一项的元组。
你应该记住,逗号创建一个元组,而不是括号(如果有的话)。
以下是演示:
>>> x = 1, 2, 3
>>> x
(1, 2, 3)
>>> x = (1, 2, 3)
>>> x
(1, 2, 3)
>>>