我是 Python 新手,但出于兴趣编写程序,所以我对 OOP 和一般计算机编程有一定的了解。我已经开始研究一个简单的动物模拟器。在很可能是异教徒的举动中,我试图将动物的所有“动作函数”存储在字典中,以便每个函数都可以通过字符串访问。例如,dict['SLEEP']()
调用 sleep 函数。
我找不到我想要完成的事情的例子,坦率地说,我不确定如何明智地描述我的问题。请参阅下面的基本代码:
class Animal:
def __init__(self):
self.health = 100
self.actions = {} # dictionary of functions
self.initializeAnimal()
def initializeAnimal(self):
self.actions['SLEEP'] = self.initializeSleep() # add sleep function
def initializeSleep(self):
RESTORED_HEALTH = 20
# other constants
def sleep(self):
self.health += RESTORED_HEALTH
# utilize other constants
return sleep
然后,动物处理程序将执行以下操作:
for animal in animalList:
animal.actions['SLEEP']()
当调用 sleep 函数时,我当然希望动物的健康增加 20。相反,什么也没有发生。经过一些研究和实验,我看到self
传递给sleep()
函数显然是指initializeSleep()
而不是动物类。
当以这种方式调用函数时,我对如何改变动物的健康状况感到有些不知所措。我是否必须以某种方式使用超类调用?
编辑:澄清语法