类的 __call__ 方法

示例一

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

# '''由于 f 可以被调用,所以,f 被称为可调用对象. 所有的函数都是可调用对象.'''


a = list
print('a的名字',a.__name__)
class Person(object):
    def __init__(self, name, gender):
        print('初始化__init__方法')
        self.name = name
        self.gender = gender

    def __call__(self, friend):
        print( 'My name is %s...' % self.name)
        print ('My friend is %s...' % friend)

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

输出:

a的名字 list
初始化__init__方法
My name is Bob...
My friend is Tim...

示例二

lass Fib(object):
    def __init__(self):
        print('__init__')
        pass

    def __call__(self, num):
        print('__call__')
        a, b = 0, 1;
        self.l = []
        for i in range(num):
            self.l.append(a)
            a, b = b, a + b
        return self.l

    def __str__(self):
        return str(self.l)

    __rept__ = __str__

f = Fib()
print(f(10))

输出:

__init__
__call__
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
posted @ 2022-06-11 11:44  ty1539  阅读(24)  评论(0编辑  收藏  举报