__call__
Python中有一个有趣的语法,只要定义类型的时候,实现__call__函数,这个类型就成为可调用的。
换句话说,我们可以把这个类型的对象当作函数来使用,相当于 重载了括号运算符。
class g_dpm(object):
def __init__(self, g):
self.g = g
def __call__(self, t):
return (self.g*t**2)/2
计算地球场景的时候,我们就可以令e_dpm = g_dpm(9.8),s = e_dpm(t)。
class Animal ( object ): def __init__ ( self, name, legs ): self. name = name self. legs = legs self. stomach = [ ] def __call__ ( self,food ): self. stomach. append (food ) def poop ( self ): if len ( self. stomach ) > 0: return self. stomach. pop ( 0 ) def __str__ ( self ): return 'A animal named %s' % ( self. name ) cow = Animal ( 'king', 4 ) #We make a cow dog = Animal ( 'flopp', 4 ) #We can make many animals print 'We have 2 animales a cow name %s and dog named %s,both have %s legs' % (cow. name, dog. name, cow. legs ) print cow #here __str__ metod work #We give food to cow cow ( 'gras' ) print cow. stomach #We give food to dog dog ( 'bone' ) dog ( 'beef' ) print dog. stomach #What comes inn most come out print cow. poop ( ) print cow. stomach #Empty stomach '' '-->output We have 2 animales a cow name king and dog named flopp,both have 4 legs A animal named king ['gras '] ['bone ', 'beef '] gras [] ' ''