说我想做到这一点,以便在我写的时候:
class Bacon:
def __init__(self):
self.bacon = True
def eatBacon(self):
self.bacon = False
print self.bacon
bacon = Bacon()
x = bacon
y = raw_input("eatBacon")
然后说我想做这样的事情:
x.y()
那可能吗?
抱歉,如果它看起来像一个愚蠢的问题,我才刚刚开始学习面向对象的编程。
编辑:
假设我输入“ eatBacon”作为输入。
我希望x.y()转换为bacon.eatBacon()
最佳答案
您可以,但不完全是那样。
在Python中,函数就像其他任何变量一样,因此您可以像分配其他变量一样分配它们。利用这一点,您可以拥有如下代码:
def eat_bacon():
return 'Om nom nom.'
call_map = {'eat': eat_bacon} # here, I am using the name of method
y = raw_input('Type eat: ')
print call_map[y]()
但是,当您有一个对象时,它有点不同。您可以使用
getattr
方法获取对象的属性,并以此方式进行使用:class OmNom(object):
def __init__(self):
self.bacon = True
def eat(self):
self.bacon = False
return 'Om nom nom'
monster = OmNom()
y = raw_input('Type eat: ')
print getattr(monster, y)()
# This is the same as
# z = getattr(monster, 'eat')
# Now z points to the eat method of the object, then
# z() will call that method.