2013-04-06 2 views
0

Привет Я нахожусь в процессе создания игры, и я ударил камень преткновения это часть моего кода ниже:объект Python сориентированные не изменяя значения в функции инициализации

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 кто-то может совать меня в правильном направлении, пожалуйста! Спасибо, я понимаю, что я, вероятно, отсутствует что-то очень простой, у меня нет большого опыта работы с ОО

ответ

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 

Таким образом, легко различить betw een классы и объекты.

+0

Хорошо, я понял, как это исправить? – user2137452

+0

отличные ура: D – user2137452

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 

, который должен работать. и вы можете изменить «джордж» на все, что хотите, просто убедитесь, что он согласован.

Смежные вопросы