Python速成课程项目:对象没有属性

2024-10-06 11:19:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着从Python速成课程做这个项目,在项目的中间我遇到了这个错误,我不明白为什么,我有外星人_入侵.py, 设置.py以及发货.py文件,在这里:

这是外星的主文件_入侵.py在

import sys
import pygame
from settings import Settings
from ship import Ship

def run_game():
    pygame.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode((ai_settings.screen_width, 
    ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion")

    ship = Ship(screen)

    bg_color = (230, 230, 230)

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()

        screen.fill(ai_settings.bg_color)
        ship.blitme()

        pygame.display.flip()

run_game()

这是设置.py在

^{pr2}$

这个是发货.py在

import pygame

class Ship():
    def __init__(self, screen):
        self.screen = screen

        self.image = pygame.image.load('images/ship.bmp')
        self.rect = self.image.get_rect()
        self.screen_rect = screen.get_rect()

        self.rect.centerx = self.screen_rect.centerx
        self.rect.bottom = self.screen_rect.bottom

        def blitme(self):
            self.screen.blit(self.image, self.rect)

上面写着:

Traceback (most recent call last):
  File "alien_invasion.py", line 26, in <module>
    run_game()
  File "alien_invasion.py", line 22, in run_game
    ship.blitme()
AttributeError: 'Ship' object has no attribute 'blitme'

Tags: runpyrectimageimportselfgamesettings
1条回答
网友
1楼 · 发布于 2024-10-06 11:19:19

问题是blitme函数嵌套在init中发货.py. Tab该函数返回一个与init一致的函数,您将能够引用blitme()。在

import pygame

class Ship():
    def __init__(self, screen):
        self.screen = screen

        self.image = pygame.image.load('images/ship.bmp')
        self.rect = self.image.get_rect()
        self.screen_rect = screen.get_rect()

        self.rect.centerx = self.screen_rect.centerx
        self.rect.bottom = self.screen_rect.bottom

    def blitme(self):
        self.screen.blit(self.image, self.rect)

相关问题 更多 >