美文网首页
45-python中 __call__

45-python中 __call__

作者: mingminy | 来源:发表于2017-12-22 14:00 被阅读0次

    在Python中,函数其实是一个对象:

    >>> f = abs

    >>> f.__name__

    'abs'

    >>> f(-123)

    123

    由于f可以被调用,所以,f被称为可调用对象。

    所有的函数都是可调用对象。

    一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()

    我们把Person类变成一个可调用对象:

    class Person(object):

    def __init__(self, name, gender):

    self.name = name

    self.gender = gender

    def __call__(self, friend):

    print 'My name is %s...' % self.name

    print 'My friend is %s...' % friend

    现在可以对Person实例直接调用:

    >>> p = Person('Bob', 'male')

    >>> p('Tim')

    My name is Bob...

    My friend is Tim...

    单看p('Tim')你无法确定p是一个函数还是一个类实例,所以,在Python中,函数也是对象,对象和函数的区别并不显著。

    相关文章

      网友评论

          本文标题:45-python中 __call__

          本文链接:https://www.haomeiwen.com/subject/hxntgxtx.html