Python 2.7将对象传递给类函数

时间:2015-04-28 10:33:03

标签: python python-2.7 object parameter-passing

我正在尝试在python中测试我的2D坐标和矢量类。以下是定义向量和坐标类的代码:

class coord(object):
    def __init__(self,x,y):
        self.x = x
        self.y = y
    def resolve(endCoord):
        return vector((self.x-endCoord.x),(self.y-endCoord.y))

class vector(object):
    def __init__(self, xTrans, yTrans):
        self.xTrans = xTrans
        self.yTrans = yTrans
        self.magnitude = sqrt((self.xTrans**2)+(self.yTrans**2))

然后我用下面的陈述测试这些:

inp1 = raw_input("Please enter the first coordinate: ")
inp2 = raw_input("Please enter the second coordinate: ")
coord1 = coord(int(inp1[0]), int(inp1[2]))
coord2 = coord(int(inp2[0]), int(inp2[2]))
vector1 = coord1.resolve(coord2)
print "Vector magnitude is "+str(vector1.magnitude) 

我遇到问题:

vector1 = coord1.resolve(coord2)

它会抛出此错误:

exceptions.TypeError: resolve() takes exactly 1 argument (2 given)

我不知道如何修复它。我给出的inp1是“0,0”(没有引号)而对于inp2我给出“5,5”(再没有引号)

我认为,当函数在坐标类中时,将对象作为函数参数或者我将坐标作为函数参数这一事实可能是个问题吗?

我真的不知道,任何帮助都会受到赞赏!

2 个答案:

答案 0 :(得分:3)

resolve的第一个参数应为self

class coord(object):
    ...
    def resolve(self, endCoord):
        return vector((self.x-endCoord.x),(self.y-endCoord.y))

答案 1 :(得分:1)

所有方法(如函数,但在类中)接受第一个参数emacs,如self方法所示。

__init__()

应该是

def resolve(endCoord):

请参阅relevant docs