为了账号安全,请及时绑定邮箱和手机立即绑定

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

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...


正在回答

2 回答

简单来说

p('Alice') 是p.__call__('Alice')的缩写。
2 回复 有任何疑惑可以回复我~

是说这个__call__类方法吗

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

例:

class Words(object):

    def say():

        print("Python语言Good")

say()

say.__call__()


两则代码的输出都是:

"Python语言Good"

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

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信