2013-05-25 28 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) 

otrzymuję ten błąd:Python przypisanie dwóch zmiennych w jednej linii

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

Powinieneś użyć ';' zamiast ',' w '__init__'. –

Odpowiedz

21

nie można umieścić dwa oświadczenia w jednej linii tak. Kod jest oceniany tak:

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

Albo użyć średnika (na drugim myśli, nie rób tego):

self.a = a; self.b = b 

Albo użyć sekwencji rozpakowaniu:

self.a, self.b = a, b 

Lub po prostu podziel go na dwie linie:

self.a = a 
self.b = b 

Zrobiłbym to na ostatni sposób.

+0

+1 do rozpakowywania sekwencji. Zdecydowanie może być użyteczne, aby zaoszczędzić miejsce podczas tworzenia kilku zmiennych do czegoś podobnego do '0', takich jak liczniki – rickcnagy

+1

@ br1ckb0t: Jeśli wszystkie mają tę samą wartość, możesz po prostu zrobić' a = b = c = 0'. – Blender