我正在尝试制作口袋妖怪游戏。在这个游戏中,我尝试开设神奇宝贝(特定)类,以扩展神奇宝贝(普通)类
例如,Charmander类扩展了pokemon类
但是,每当扩展pokemon时,都会出现名称错误,在扩展pokemon之前尝试导入,但仍然出现错误 这是我的pokemon.py:
from Charmander import *
from Bulbasaur import *
from Turtwig import *
class Pokemon:
def __init__(self, current_hp, attack, defense):
self.name = "PlaceHolder"
self.pokemon_type = "PlaceHolder"
self.current_hp = current_hp
self.attack = attack
self.defense = defense
self.fainted = False
def getName(self):
return self.name
def getType(self):
return self.pokemon_type
def getCurrentHP(self):
return self.current_hp
def getHealth(self):
return self.current_hp
def getAttack(self):
return self.attack
def getDefense(self):
return self.defense
def getFainted(self):
return self.fainted
def printStatus(self):
print(self.name)
print(str(self.current_hp))
def takedamage(self, amount):
self.current_hp -= amount
def tackle(self, opponent):
opponent.current_hp -= self.attack
def die(self, opponent):
self.fainted = True
if self.current_hp == 0:
print("You Lose!")
elif(opponent.current_hp == 0):
print("You win!")
def checkDead(self, opponent):
if self.current_hp == 0 or opponent.current_hp == 0:
self.die(opponent)
def assignPokemon(self, player):
if player == "Charmander":
player = Charmander(200, 20, 20)
if player == "Bulbasaur":
player = Bulbasaur(200, 20, 20)
if player == "Turtwig":
player = Turtwig(200, 20, 20)
return player
这是我的Charmander.py:
from pokemon import *
class Charmander(Pokemon):
pass
def __init__(self, current_hp, attack, defense):
self.name = "Charmander"
self.type = "Fire"
self.current_hp = 200
self.attack = 10
self.defense = 10
def ember(self, opponent):
opponent.takeDamage(40)
def will_o_wisp(self, opponent):
return
def flamethrower(self, opponent):
opponent.takeDamage(90)
这是我收到的错误: / Users / alex / PycharmProjects / test / venv / bin / python“ / Users / alex / Documents / SCSNoonan Computer Science / Slow Pokemon / main.py” 追溯(最近一次通话): 文件“ / Users / alex / Documents / SCSNoonan Computer Science / Slow Pokemon / main.py”,第1行,在 从口袋妖怪进口* 文件“ / Users / alex / Documents / SCSNoonan Computer Science / Slow Pokemon / pokemon.py”,第1行,在 从Charmander进口* 文件“ / Users / alex / Documents / SCSNoonan Computer Science / Slow Pokemon / Charmander.py”,第2行,在 Charmander(Pokemon)类: NameError:名称“ Pokemon”未定义
答案 0 :(得分:1)
此错误可能是由于circular imports引起的。另外,在pass
类内的__init__
方法之前的Charmander
语句是无用的。
您无需在pokemon.py
文件中执行此操作
from Charmander import *
from Bulbasaur import *
from Turtwig import *
方法assignPokemon
不需要self
参数,因此它应该是staticmethod
或在您的Pokemon
类之外。
您应该将所有pokemon类放在一个文件中,然后可以在另一个文件中调用assignPokemon
,例如:
# main.py
from pokemon import Charmander, Bulbasaur, Turtwig
def assignPokemon(player):
if player == "Charmander":
player = Charmander(200, 20, 20)
if player == "Bulbasaur":
player = Bulbasaur(200, 20, 20)
if player == "Turtwig":
player = Turtwig(200, 20, 20)
return player