zoukankan      html  css  js  c++  java
  • Python

    __call()__ 的作用

    使得类实例对象可以像普通函数那样被调用

    实际栗子

    from typing import Callable
    
    
    class PoloBlog:
        def __init__(self, name):
            self.name = name
    
        def __call__(self, *args, **kwargs):
            print(self.name)
            print(args)
            print(kwargs)
    
    
    blog = PoloBlog("小菠萝")
    blog(1, 2, 3, age=24, sex="girl")
    
    print(isinstance(blog, Callable))
    
    
    # 输出结果
    小菠萝
    (1, 2, 3)
    {'age': 24, 'sex': 'girl'}
    True
    • blog() 就像普通函数一样,可以直接执行
    • blog 实例对象就是一个可调用对象

    什么是可调用对象

    • Python 中,可以通过 对象() 执行成功的对象,都称为可调用对象
    • 可调用对象包括自定义的函数、Python 内置函数、上面说的实现了 __call__ 的类实例对象

    可以通过 isinstance 来判断是不是可调用对象

    from typing Callable
    
    isinstance(对象, Callable)

    自定义函数的栗子

    def say():
        print("小菠萝测试笔记")
    
    # 调用自定义函数的两种方式
    
    say()  # 常见的方式
    say.__call__()
    
    
    # 输出结果
    小菠萝测试笔记
    小菠萝测试笔记

    类实例方法的栗子

    class A:
        def say(self):
            print("小菠萝测试笔记")
    
    
    a = A()
    a.say()
    a.say.__call__()
    
    
    # 输出结果
    小菠萝测试笔记
    小菠萝测试笔记

    总结

    •  对象() 还是常用的可调用对象的执行方式
    •  对象.__call__() 作为了解补充即可
  • 相关阅读:
    第1章 引论
    Java反射
    用户职责菜单请求组
    API及接口清单
    独立值集导入脚本
    报表对应程序包查询
    正则表达式
    合并工作表
    去重
    分割表
  • 原文地址:https://www.cnblogs.com/poloyy/p/15253366.html
Copyright © 2011-2022 走看看