Python找不到类属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python找不到类属性相关的知识,希望对你有一定的参考价值。

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

Traceback (most recent call last):
  File "C:UsersethanDesktoppyprojectspygamedisplay.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.朋友

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.朋友

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))

再次感谢!

答案

我得到一个不同的错误:

    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 *行。如果播放器和显示模块都需要,请将它们放入另一个单独的模块中。

以上是关于Python找不到类属性的主要内容,如果未能解决你的问题,请参考以下文章

学习 PyQt5。在我的代码片段中找不到错误 [关闭]

Kotlin 在片段中找不到按钮 ID,为啥?

在转发类中找不到属性

python 2018.7.24 类空间,对象空间,查询顺序 ,组合

在转发类对象中找不到属性

Python MainWindow 类找不到属性