Змеиный объект не имеет атрибута «прямоугольник»? - PullRequest
1 голос
/ 23 марта 2020

У меня есть объект змея, и я определил self.rect в методе draw. Но когда я ссылаюсь на snake.rect, он говорит, что не имеет атрибута rect. Кто-нибудь знает почему? Змея класс:

class Snake:

    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.width = 25
        self.height = 25
        self.direction = 1
        self.kill = False
        self.collide = False

    def draw(self):
        self.rect = pygame.Rect(self.x, self.y, self.width, self.height)
        pygame.draw.rect(screen, BLACK, self.rect)

    def events(self):
        # change direction on key press
        self.keys = pygame.key.get_pressed()

        if self.keys[pygame.K_UP]:
            self.direction = 1
        if self.keys[pygame.K_DOWN]:
            self.direction = 3
        if self.keys[pygame.K_LEFT]:
            self.direction = 4
        if self.keys[pygame.K_RIGHT]:
            self.direction = 2

        if self.rect.colliderect(food.rect):
            self.collide = True
            print(self.collide)

Спасибо!

1 Ответ

1 голос
/ 23 марта 2020
class Test():
  def __init__(self, x, y):
    self.x = x
    self.y = y
    self.text = 'Hello world!'

  def another_function(self, parameter):
    self.variable = parameter

Давайте посмотрим на этот простой код. X и Y инициализируются, как только создается экземпляр класса, поэтому:

new_instance = Test(4,5)
print(new_instance.text)

будет работать. Однако

print(new_instance.variable)

не будет работать, так как variable еще не привязан к экземпляру класса. Как только вы сделаете:

new_instance.another_function(3)
print(new_instance.variable)

, оно будет работать.

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