一、可调用对象
在类中定义__call__魔术方法,由此创建的对象就可以像函数那样进行调用了
class People:
def __call__(self, food):
print("他在吃{0}".format(food))
man = People()
man("苹果")
他在吃苹果
一般情况下,调用一次函数后便会被销毁,并不会记录上一次调用的结果,这是无状态的。可以给调用对象增加记忆功能,使其成为有状态的函数,修改People类。
class People:
def __init__(self):
self.food = []
def __call__(self, food):
self.food.append(food)
print("他在吃{0}".format(food))
def __str__(self):
return str.join("-->",self.food)
man = People()
man("苹果")
man("饼干")
man("牛奶")
man("鸡蛋")
print("他吃东西的顺序是:",str(man))
他在吃苹果
他在吃饼干
他在吃牛奶
他在吃鸡蛋
他吃东西的顺序是: 苹果-->饼干-->牛奶-->鸡蛋