Próbuję zaakceptować tuple
i list
jako typy obiektów w metodzie __add__
w Pythonie. Zobacz następujący kod:Implementacja krotek i list w funkcji isinstance w Pythonie 2.7
class Point(object):
'''A point on a grid at location x, y'''
def __init__(self, x, y):
self.X = x
self.Y = y
def __str__(self):
return "X=" + str(self.X) + "Y=" + str(self.Y)
def __add__(self, other):
if not isinstance(other, (Point, list, tuple)):
raise TypeError("Must be of type Point, list, or tuple")
x = self.X + other.X
y = self.Y + other.Y
return Point(x, y)
p1 = Point(5, 10)
print p1 + [3.5, 6]
Błąd pojawia po uruchomieniu go w interpretera Pythona:
AttributeError: 'list' object has no attribute 'X'
ja po prostu nie mogę zrozumieć, dlaczego nasz to nie działa. To jest praca domowa na kursie uniwersyteckim i mam bardzo małe doświadczenie z Pythonem. Wiem, że funkcja isinstance
w Pythonie może przyjmować krotkę obiektów typu, więc nie jestem pewien, który element, który mi brakuje dla obiektów tuple
i list
, które mają zostać zaakceptowane. Czuję, że to jest coś naprawdę prostego, którego po prostu nie odbieram.