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)
to
Monsters.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”