Python找不到类属性

时间:2017-12-27 20:04:14

标签: python-2.7 pygame

我在制作pygame项目时遇到了障碍。 display.py文件无法在render()文件中找到player.py属性。

Traceback (most recent call last):
  File "C:\Users\ethan\Desktop\pyprojects\pygame\display.py", line 34, in <module>
    player.render(screen)
AttributeError: Player instance has no attribute 'render'

我尝试删除渲染播放器的引用。它工作,加上屏幕呈现正确。当我重新放入参考时,屏幕无法正常渲染,并且一起崩溃

如果你能帮助我,我们将不胜感激。

这是代码:

Windows 10 Python的2.7 pygame的-1.9.3

display.py

import pygame
from player import *
import sys

pygame.init()

black = (0,0,0)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)
white = (255,255,255)

screen_x = 800
screen_y = 600
screen = pygame.display.set_mode([screen_x, screen_y])
pygame.display.set_caption("Test")

clock = pygame.time.Clock()

player = Player(0,0)

gameLoop = True

while gameLoop:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            gameLoop = False

        print(event)

    clock.tick(30)
    pygame.display.update()
    player.render(screen)
    screen.fill(white)


pygame.quit()

player.py

import pygame
from display import *
import sys

class Player:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.width = 32
        self.height = 32
    def render(self, window):
        pygame.draw.rect(window, (0,0,255), (self.x, self.y, self.width, self.height))
再次感谢!

1 个答案:

答案 0 :(得分:1)

我得到了一个不同的错误:

    player = Player(0,0)
NameError: name 'Player' is not defined

这是因为您从player.py文件中的display导入并在player.py中定义Player之前运行display.py文件。

您可以将display.py中的代码放入main函数中,并在特殊的if子句中调用它:

if __name__ == '__main__':
    main()

确保导入显示模块时main函数不会运行。

或者您可以删除播放器模块中的行from display import *。如果播放器和显示模块都需要,请将它们放入另一个单独的模块中。