2013-12-23 40 views
0

我想要封裝了一些數據到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'> 

爲什麼改變從inttuple類型(在Python 3.3.0,Windows中,IDLE)?

+0

那你認爲* *在逗號'A = A,'會做什麼?沒有? – delnan

+0

我認爲沒有逗號......通常Python中的拼寫錯誤不會像這樣隱藏自己! – Hannes

回答

1

您將其更改爲這裏的元組:

self.value = value, 

逗號在該行的結束意味着你正在創建與value作爲第一個值的元組。例如:

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

self.value之後是一個tuple和不再是int

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) 
>>> 
相關問題