问答详情
源自:4-6 Python类的__call__方法

还是没弄明白这个函数要怎么用

class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender

    def __call__(self, friend):
        print('My name is {}...'.format(self.name))
        print('My friend is {}...'.format(friend))

>>> p = Person('Bob', 'Male')
>>> p('Alice') # ==> 用函数的方式调用Person类的实例p
My name is Bob...
My friend is Alice...


提问者:慕前端0137584 2021-08-19 10:49

个回答

  • 花鸿
    2021-11-23 09:39:01

    简单来说

    p('Alice') 是p.__call__('Alice')的缩写。

  • 棹孤舟
    2021-08-19 15:45:06

    是说这个__call__类方法吗

    我的想法是:原本创建了Python中的一个类(还没有创建这个类中的实例),然后再定义类的时候采用了__call__的类方法使整个类(中的实例对象)由。不可调动  变为 可调动  的模式,可以让类中的实例对象可以直接调用函数

    例:

    class Words(object):

        def say():

            print("Python语言Good")

    say()

    say.__call__()


    两则代码的输出都是:

    "Python语言Good"

    say() 是 say.__call__()的缩写

    采用__call__就是重新加载了函数()运算符