Я пишу игру в pygame, и у меня есть класс, который отображает хедз-ап со статистикой для каждого здания, когда вы нажимаете на него. переменная класса current_hud начинается со значения None, но при щелчке по зданию ее значение становится объектом здания, так что при вызове функции рисования она рисует только корпус выбранного здания.
Проблема в том, что я пытаюсь создать экземпляр моего класса «Текст» в hud, но я получаю AttributeError: объект «NoneType» не имеет атрибута «имя», потому что self.current_hud еще не является объектом , поэтому self.current_hud.name еще не является атрибутом. Как сослаться на несуществующий атрибут? ждет, чтобы создать экземпляр класса hud до тех пор, пока здание не будет нажато, действительно единственный вариант?
class Hud:
current_hud = None
def __init__(self,x,y):
self.x = x
self.y = y
self.name_text = Text(x,y,str(self.current_hud.name), (0,0,0), 36)
def draw(self):
if Hud.current_hud == self:
self.square = pygame.Rect((self.x,self.y),(440,400))
pygame.draw.rect(screen,(255,255,255),self.square)
self.name_text.x = self.x + 10
self.name_text.y = self.y + 20
извините, если это запутанно, но это немного сложно объяснить. Полный код находится здесь, если вы хотите запустить его и посмотреть, как все это работает: https://github.com/hailfire006/economy_game/blob/master/economy_game.py
if self.current_hud is None: self.current_hud = self
) - person Patrick Maupin   schedule 28.07.2015