ImportError:无法导入名称“create_player”

2024-05-02 10:12:34 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我第一次来这里,如果我忘了什么,我很抱歉。在

我正在尝试制作这个基于文本的rpg游戏。我有两个不同的文件:rpg和character_文件。rpg是调用其他函数的主文件。我没有复制整个代码,因为有超过1000行,所以如果我需要添加任何东西,请让我知道。在

这是来自rpg的:

import time
import gui
import character_file
import battle
import random

#mode, race and char_name have been defined in another function.
def create_player(mode, race, char_name):
 if mode == 2:
  if race == 1:
   player = Character.Goblin(char_name, app)
  elif race == 2:
   player = Character.Orc(char_name, app)
  elif race == 3:
   player = character.Uruk(char_name, app)
  elif race == 4:
   player = character.Wizard(char_name, app)
  else:  
   player = character.Troll(char_name, app)
 else:
  if race == 1:
   player = character.Elf(char_name, app)
  elif race == 2:
   player = character.Dwarf(char_name, app)
  elif race == 3:
   player = character.Human(char_name, app)
  elif race == 4:
   player = character.Hobbit(char_name, app)
  else:
   player = character.Wizard(char_name, app)
 return player

...

player = create_player(mode, race, char_name)

这是character_文件:

^{pr2}$

当我运行这个时,它会出现一个AttributeError:“module”对象没有属性“character”

我很抱歉,如果代码混乱,如果我遗漏了什么。提前谢谢你!在

更新:对不起。回溯如下:

Traceback (most recent call last):
  File "F:\Documents\School\IT\Python_RPG - Copy\rpg.py", line 12, in <module>
    import character_file
  File "F:\Documents\School\IT\Python_RPG - Copy\character_file.py", line 12, in <module>
    import rpg
  File "F:\Documents\School\IT\Python_RPG - Copy\rpg.py", line 600, in <module>
    player = create_player(mode, race, char_name)
  File "F:\Documents\School\IT\Python_RPG - Copy\rpg.py", line 169, in create_player
    player = character_file.character.Elf(char_name, app)
AttributeError: 'module' object has no attribute 'character'

Tags: 文件nameinimportappmodecreaterpg
1条回答
网友
1楼 · 发布于 2024-05-02 10:12:34

我想这只是个打字错误(大写“C”)。在

您应该在character(或characters)中重命名您的character_file.py。在

此模块包含一组类:

class Character:
    # [...]
    pass


class Dwarf(Character):
    # A sub-class of Character
    # [...]
    pass

要导入类,必须编写:

^{pr2}$

这个声明是错误的:

class Dwarf(Character, app):

⇨你没有继承app。在

您的构造函数应具有以下签名:

class Dwarf(Character):
    def __init__(self, char_name, app):
        super(Dwarf, self).__init__(char_name, app)
        # more init here

相关问题 更多 >