微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AttributeError:部分初始化的模块'juego'没有属性'VENTANA_VERTICAL'很可能是由于循环导入

如何解决AttributeError:部分初始化的模块'juego'没有属性'VENTANA_VERTICAL'很可能是由于循环导入

我正在尝试从同一文件夹中的“ juego.py”文件访问变量和函数,但出现错误。当前文件名为“ pantalla_fin.py”

错误: 在game_over_y = juego.VENTANA_VERTICAL / 3的第5行,输入文件“ c:\ Users \ danie \ OneDrive \ Escritorio \PROGRAMACIÓN\ ArchivosPyhton \ Pong \ view \ pantalla_fin.py” AttributeError:部分初始化的模块'juego'没有属性'VENTANA_VERTICAL'(很可能是由于循环导入)

import juego
import pygame

# Coordinates depending on the message
game_over_y = juego.VENTANA_VERTICAL/3
pulsar_y = juego.VENTANA_VERTICAL/3+75

# Function that draws the text 
def escribir_mensaje(tamaño,frase,y):
    font = pygame.font.Font("C:/Users/danie/OneDrive/Escritorio/PROGRAMACIÓN/ArchivosPyhton/Pong/imagenes_y_fuentes/fuente_numeros.ttf",tamaño)
    ancho = font.height(frase)
    x = juego.VENTANA_HORIZONTAL/2 - ancho/2
    
    mensaje = font.render(frase,True,(255,255,255))
    juego.ventana.blit(mensaje,(x,y))

# Main function
def game_over(ganador):
    
    running = True
    while running:
        juego.ventana.fill(juego.NEGRO)
        if ganador == "score1":
            escribir_mensaje(64,"You have won",game_over_y)
        elif ganador == "score2":
            escribir_mensaje(64,"Game Over",game_over_y)
        escribir_mensaje(16,"Click to restart",pulsar_y)

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

            if event.type == pygame.MOUSEBUTTONDOWN:
                if event.button==1:
                    juego.main()

        pygame.display.flip()
        pygame.time.Clock().tick(juego.FPS)

    pygame.quit()

game_over("score1")

解决方法

我过去也遇到过同样的问题,之所以遇到这个问题,是因为您和我一样,可能在您的代码文件之间创建了循环依赖关系。让我更好地解释一下:如果您创建一个game.py文件,该文件调用了screen_fin.py文件的某些函数或变量,并且还从game.py中调用了函数,那么您将有两个文件相互调用,这使得很多问题。当我更改项目中的文件导入时,所有这些问题都消失了。但是,如果需要,您可以在此处看到更多信息:https://stackabuse.com/python-circular-imports/

我希望这是XD的重点

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。