我试图从一个类中调用一个函数,这个类的名称将根据实例化的敌人类型而改变。我怎样才能做到这一点
我的尝试是:AssignClass.[self.Class](self)
但很明显辛塔克斯没有意义
class Creature:
def __init__(self, Name, Class):
self.Name = Name
self.Class = Class
# Using a variable function call to remove
# the need for a ton of 'if' statements
AssignClass.[self.Class](self)
# Basically automate doing this:
if self.Class = "Orc":
AssignClass.Orc(self)
elif self.Class = "Wizard"
AssignClass.Wizard(self)
class AssignClass:
def Orc(Creature):
Creature.Class='Orc'
Creature.Health=100
Creature.Mana=0
def Wizard(Creature):
Creature.Class='Wizard'
Creature.Health=75
Creature.Mana=200
Evil_Wizard = Creature("Evil Wizard", "Wizard")
玩了一会儿,发现我可以用eval来做这个(安全,因为此处不能添加任何用户输入)
您可以使用^{} 检索类方法,然后只传递
Creature
实例,例如:顺便说一句,这只是Python类的一种推荐样式,其中最不重要的一点是,您在
AssignClass
中隐藏了Creature
类(它本来就不应该是类)。我建议你仔细阅读PEP 8 Style Guide for Python Code相关问题 更多 >
编程相关推荐