Python对象不会改变init函数中的值

时间:2013-04-06 20:18:52

标签: python oop pygame

嗨,我正在制作游戏,我遇到了绊脚石,这是我的代码的一部分:

class player(object):
    def __init__(self):
        self.x = 10
        self.y = 10
        self.amount = 5
        self.answer = 0

     def move(self):
        self.x += self.amount
        self.y += self.amount


while True:
    player().move()
    print player().x

它可能是一个非常基本的错误,但无论move()函数是什么,它似乎都没有改变self.x或self.y的价值,有人可能会朝着正确的方向戳我!谢谢,我意识到我可能遗漏了一些非常基本的东西,我对OO没有多少经验

2 个答案:

答案 0 :(得分:4)

player().move()    # create a player and move it
print player().x   # create another player and print its x

你的意思是:

aplayer = player()
aplayer.move()
print aplayer.x

PS:通常的做法是将类名称大写:

class Player(object):
    def __init__(self):
        self.x = 10
        self.y = 10
        self.amount = 5
        self.answer = 0

     def move(self):
        self.x += self.amount
        self.y += self.amount


player = Player()
player.move()
print player.x

通过这种方式,可以轻松区分类和对象。

答案 1 :(得分:0)

确定。另一个人说的是你需要将“玩家”设置为乔治等变量,然后调用George.move()

所以

class Player(object):
    def __init__(self):
        self.x = 10
        self.y = 10
        self.amount = 5
        self.answer = 0

    def move(self):
        self.x += self.amount
        self.y += self.amount

While True:
    george = Player()
    george.move()
    print george.x

应该有用。你可以把“乔治”变成你想要的任何东西,只要确保它是一致的。