Python 属性错误:';模块';对象没有属性错误
所以我一直在做这个游戏。我有两个文件,Python 属性错误:';模块';对象没有属性错误,python,Python,所以我一直在做这个游戏。我有两个文件,Rooms.py和Monsters.py。当我运行Rooms.py时,出现错误AttributeError:“module”对象没有属性“Monster”。它来自创建战利品怪物功能中的怪物.怪物.创建怪物(自我)一行。发生了什么事 房间的位.py: def create_15by15_rooms(): roomlist = [] for i in range(-7 ,8): e = -7 i + 1
Rooms.py
和Monsters.py
。当我运行Rooms.py
时,出现错误AttributeError:“module”对象没有属性“Monster”
。它来自创建战利品怪物
功能中的怪物.怪物.创建怪物(自我)
一行。发生了什么事
房间的位.py
:
def create_15by15_rooms():
roomlist = []
for i in range(-7 ,8):
e = -7
i + 1
for e in range(-7 ,8):
room = Room(i - 1, e, [i - 1, e], [], [])
e + 1
roomlist.append(room)
Room.create_loot_monsters(room)
return roomlist
def create_loot_monsters(self):
factor = random.randint(0, 100)
if factor <= 20:
pass
elif factor > 20 and factor <= 50:
pass #loot room (function to generate loot)
else:
Monsters.Monster.create_monsters(self)
return self
def create_monsters(self):
num = random.randint(0,200)
if num <= 20:
self.monsters = Monster.Slime
elif num > 20 and num <= 50:
self.monsters = Monster.Zombie
elif num > 50 and num <= 80:
self.monsters = Monster.Skeleton
elif num > 80 and num <= 120:
self.monsters = Monster.Infected
else:
self.monsters = Monster.Spirit
return self.monsters
编辑:从以下两个位置导入:
房间
import random
import Monsters
怪兽
import random
import Rooms
那么到底发生了什么?为什么该函数不起作用?看起来您有一个循环导入
Rooms.py
从Monsters.py
导入,但是Monsters.py
也从Rooms.py
导入
最好避免像这样的循环进口。在您显示的代码中,Monsters.py
不使用Rooms.py
中的任何内容,因此您应该能够通过删除import Rooms
导入来解决此问题
注意,建议使用小写字母作为模块名称,例如rooms.py
和monsters.py
。这使得在代码中更容易看到模块房间
和类房间
之间的差异。解决方案:
改变
Monsters.Monster.create_Monsters(self)
toMonsters.Monster.create_Monsters()
它应该会起作用
检查表:
1确保Monsters.Monster.create_Monsters()函数接受room.py中的类实例
原因:
怪物。怪物。创造怪物(自我)
在这一行中,您似乎关心调用类函数create_monsters。传入的参数u r是room.py中的整个类(无论该类是什么)
,而从代码怪物看来,除了类本身,您不接受其他参数。欢迎使用SO!这看起来像是一个进口问题。您是否可以编辑您的问题以显示代码中的
import
行?您只能显示Monsters
模块。什么是怪物。怪物?在怪物
模块中是否有名为怪物
的类?我在Rooms.py中有一个类“Room”,在Monsters.py中有一个类“Monster”