无法导入类

als*_*kin 1 python pygame

这是我正在制作的游戏.不过我自己也看不到问题.

这是错误和两个.py文件:

C:\Users\Rickard\My Programs\Python\slutarbete\New try>main.py
Traceback (most recent call last):
  File "C:\Users\Rickard\My Programs\Python\slutarbete\New try\main.py", line 6,
 in <module>
    from rabbits import Rabbit
  File "C:\Users\Rickard\My Programs\Python\slutarbete\New try\rabbits.py", line
 3, in <module>
    import main
  File "C:\Users\Rickard\My Programs\Python\slutarbete\New try\main.py", line 6,
 in <module>
    from rabbits import Rabbit
ImportError: cannot import name Rabbit
Run Code Online (Sandbox Code Playgroud)

main.py

# -*- coding: utf-8 -*-

import pygame, sys, random, math
from rabbits import Rabbit
from pigs import Pig
from boars import Boar
from pygame.locals import *
from threading import Timer

pygame.init()
pygame.mixer.init()
mainClock = pygame.time.Clock()

WINDOW_WIDTH = 640
WINDOW_HEIGHT = 400

level = 1
while True:

...
Run Code Online (Sandbox Code Playgroud)

和rabbits.py文件:

# -*- coding: utf-8 -*-
import pygame, sys, random, math
import main

class Rabbit(object):

    rabbitCounter = 0
    NEW_RABBIT = 40
    RABBIT_SIZE = 64

    ...
Run Code Online (Sandbox Code Playgroud)

我肯定可以在此代码中使用一些其他明显错误的帮助.

Igu*_*aut 10

你有一个循环导入.在您的main模块中,您尝试从中导入rabbits.但是来自rabbitsimport main.但main尚未完成导入,因此ImportError当您尝试从rabbits模块导入任何内容时会导致导致.

我不知道为什么你有那个导入,但你应该重组你的模块,这样rabbits就不需要任何东西了main.

另请参见Python中的循环(或循环)导入

此外,对于包含多个模块的任何Python项目,您应该将其转换为.


Sim*_*onT 8

Python中的import语句在Python到达文件时立即执行.在这个程序的情况下,你运行main.py,Python看到

from rabbits import Rabbit
Run Code Online (Sandbox Code Playgroud)

然后Python进入rabbits.py并看到

import main
Run Code Online (Sandbox Code Playgroud)

这导致Python循环回到main.py.Python注意到它已经看到import这两个模块的语句,并决定不再尝试导入,以避免在这种情况下无限循环.

这里的解决方案是重构代码,以便rabbit.py可以从外部的另一个模块访问任何需求main.