不将对象参数识别为int

时间:2013-12-23 02:50:32

标签: python class object

class Ball:
    def __init__(self,pos,vel):
        self.pos = Vector(pos.x,pos.y)
        self.vel = Vector(vel.x,vel.y)
    def curx(self):
        return (self.pos.x + self.vel.x)
    def cury(self):
        return (self.pos.y + self.vel.y)
    def forcex(velx):
        self.vel.deltax(velx)
    def forcey(vely):
        self.vel.deltay(vely)

class Vector:
    def __init__(self,x,y):
        self.x = x
        self.y = y
    def x(self):
        return self.x
    def y(self):
        return self.y
    def delx(self,deltax):
        self.x = self.x + deltax
    def dely(self,deltay):
        self.y = self.y + deltay

这是我的两个班级,但是当我初始化并尝试从球中获得curx或cury时:

ball = Ball(Vector(0,0),Vector(0,0))
print ball.curx

我得到:<bound method Ball.curx of <__main__.Ball instance at 0x1142fd0>>

我觉得应该有一个相当简单的答案,我只是没有得到它。

1 个答案:

答案 0 :(得分:2)

curxBall的一种方法。所以,你必须调用它:

print ball.curx()

修改

@ user2357112发现了另外两个问题:

  1. Ball.forcexBall.forcey的定义缺少self个参数。

  2. Vector.xVector.y完全没用。您已将xy作为Vectorself.xself.y的属性。所以,你应该完全删除这些方法。

  3. 以下是代码的编写方式:

    class Ball:
        def __init__(self,pos,vel):
            self.pos = Vector(pos.x,pos.y)
            self.vel = Vector(vel.x,vel.y)
        def curx(self):
            return (self.pos.x + self.vel.x)
        def cury(self):
            return (self.pos.y + self.vel.y)
        def forcex(self, velx):
            self.vel.deltax(velx)
        def forcey(self, vely):
            self.vel.deltay(vely)
    
    class Vector:
        def __init__(self,x,y):
            self.x = x
            self.y = y
        def delx(self,deltax):
            self.x = self.x + deltax
        def dely(self,deltay):
            self.y = self.y + deltay
    ball = Ball(Vector(0,0),Vector(0,0))
    print ball.curx()