2013-05-25 3 views
7
class Domin(): 
    def __init__(self , a, b) : 
     self.a=a , self.b=b 

    def where(self): 
     print 'face : ' , self.a , "face : " ,self.b 

    def value(self): 
     print self.a + self.b 

d1=Domin(1 , 5) 

d1=Domin(20 , 15) 

を割り当てる私はこのエラーを取得する:Pythonは1行上に2つの変数

Traceback (most recent call last): 
    File "test2.py", line 13, in <module> 
    d1=Domin(1 , 5) 
    File "test2.py", line 5, in __init__ 
    self.a=a , self.b=b 
TypeError: 'int' object is not iterable 
+1

'__init__'に'、 'の代わりに'; 'を使うべきです。 –

答えて

21

あなたはそのような1行に二つの文を置くことはできません。あなたのコードは次のように評価されている:

self.a = (a, self.b) = b 

のどちらか(第2思想に、ということをしない)、セミコロンを使用します。

self.a = a; self.b = b 

または開梱シーケンスを使用します。

self.a, self.b = a, b 

または、それを2つの行に分割します。

self.a = a 
self.b = b 

私は最後のやり方をします。

+0

+1シーケンスのアンパック。 – rickcnagy

+1

@ br1ckb0tのように、いくつかの変数を '0'のようなものにインスタンス化するときに、スペースを節約するのに便利です。それらがすべて同じ値を持つ場合は、' a = b = c = 0'だけできます。 – Blender

関連する問題