Pythonの__add__
メソッドでオブジェクトタイプとしてtuple
とlist
を受け入れようとしています。次のコードを参照してください。Python 2.7におけるisinstance関数のタプルとリストの実装
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]
Pythonインタプリタでそれを実行しているときに私が得るエラーは次のとおりです。これが機能しない理由
AttributeError: 'list' object has no attribute 'X'
私は単に私たちを理解することはできません。これは大学の課程の宿題であり、Pythonの経験はほとんどありません。私は、isinstance
関数がPythonの型オブジェクトのタプルを受け入れることができるので、tuple
とlist
オブジェクトが受け入れられる要素がわからないことを知っています。私はこれが本当にシンプルなものだと感じています。