Python 来自dict的可变函数调用
我比较新,有相当多的经验,我正在尝试做一个基于文本的冒险,我正在制作一个战斗系统,希望敌人有不同的能力。我不是每次都为不同的敌人重现战斗,而是尝试为每个敌人使用可互换的字典。我的目标是创建一个函数调用,该函数调用根据战斗中的敌人而变化,而不会进入对象。下面我举了一个例子,我想知道是否有类似的方法Python 来自dict的可变函数调用,python,python-3.x,Python,Python 3.x,我比较新,有相当多的经验,我正在尝试做一个基于文本的冒险,我正在制作一个战斗系统,希望敌人有不同的能力。我不是每次都为不同的敌人重现战斗,而是尝试为每个敌人使用可互换的字典。我的目标是创建一个函数调用,该函数调用根据战斗中的敌人而变化,而不会进入对象。下面我举了一个例子,我想知道是否有类似的方法 wolf = {'ability': 'bite'} bear = {'ability': 'claw'} enemy = {} def claw(): print('stuff') def
wolf = {'ability': 'bite'}
bear = {'ability': 'claw'}
enemy = {}
def claw():
print('stuff')
def bite():
print('different stuff')
def use_ability():
enemy = wolf
enemy['ability']()
use_ability()
在python中,函数是第一类对象。您可以将它们用作字典中的值
wolf = {'ability': bite}
bear = {'ability': claw}
def claw():
print('stuff')
def bite():
print('different stuff')
wolf = {'ability': bite}
bear = {'ability': claw}
def use_ability():
enemy = wolf
enemy['ability']()
use_ability()
但是要小心,因为python中没有正向引用。因此,在将函数分配给字典之前,请确保定义了函数
wolf = {'ability': bite}
bear = {'ability': claw}
def claw():
print('stuff')
def bite():
print('different stuff')
wolf = {'ability': bite}
bear = {'ability': claw}
def use_ability():
enemy = wolf
enemy['ability']()
use_ability()
你可以这样做:
def claw():
print('stuff')
def bite():
print('different stuff')
wolf = {'ability': bite}
bear = {'ability': claw}
def use_ability(enemy):
enemy['ability']()
use_ability(wolf)
# different stuff
但这并不意味着你应该这样做
使用面向对象编程。如果您只想使用dict和函数,那么您可能应该编写Javascript。我忍不住要编写一个小程序,解释如何使用面向对象的语言来实现它: 您应该查阅一些OOP语言的工作指南,因为在制作游戏时,如果您这样做,它将非常有用
查找
类在python中的工作方式。Python是一种面向对象的语言。目前正在学习课程,我只想在升级之前以一种更简单的方式完成这个项目,他应该如何调用一个可以处理这两个字典的函数?因为这只是硬编码。如果他想使用bear
@Ludisposed的功能,他可以参数化函数,但显然使用继承是更好的设计。海报要求非面向对象的答案。非常感谢,是的,我没有指定更改,它只是一个硬编码的示例。我确实试着只使用没有引号的名字,但它告诉我没有定义,谢谢你澄清!回答得很好!的确它比OP的代码更冗长,但更灵活。我开始学习面向对象编程,但是我想在推进之前先创建这个项目,并且想要一个更简单的解释。我就是忍不住^^