例如,假设我有一个像这样的 Vector 类:
class Vector(object):
def __init__(self, x=0.0, y=0.0):
self.x = x
self.y = y
def __str__(self):
return '(%s, %s)' % (self.x, self.y)
如果我将此对象作为参数传递给函数,则函数将其视为
<__main__.Vector object at 0x02297E50>
现在,我可以让函数提前知道Vector(可以这么说),以便它知道访问它的属性
def foo(vect1, vect2):
return (vect2.x - vect1.x, vect2.y - vect1.y)
但是如果我想要一个只接受一对坐标的通用函数呢?
def foo(p1, p2):
return (p2[0] - p1[0], p2[1] -p1[1])
有没有办法让一个对象以特定的方式表示自己?例如,这样我就可以将我的 Vector 对象传递给上述通用函数,而所述函数不需要知道对象类型?那么它“看到”的只是构成对象属性的坐标吗?
希望这是有道理的!