类更改类型中的赋值

时间:2013-12-23 17:29:43

标签: python python-3.x

我想将一些数据封装到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中)?

2 个答案:

答案 0 :(得分:1)

您正在将其更改为元组:

self.value = value,

该行末尾的逗号表示您正在创建一个以value作为第一个值的元组。例如:

>>> 3
3
>>> 3,
(3,)

之后self.valuetuple而不再是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)
>>>