这是我正在制作的游戏.不过我自己也看不到问题.
这是错误和两个.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)
我肯定可以在此代码中使用一些其他明显错误的帮助.
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.