Python - 面向对象编程 - __call__()

简介: Python - 面向对象编程 - __call__()

__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__() 作为了解补充即可

 



相关文章
|
29天前
|
Python
python基础篇:面向对象编程
python基础篇:面向对象编程
18 0
|
2天前
|
Python
Python中的面向对象
【5月更文挑战第4天】面向对象编程(OOP)是Python的核心,涉及类与对象、封装、继承和多态。类是对象的模板,对象则是类的实例。例如,`Person`类有`__init__`构造方法和`greet`方法。
9 3
|
6天前
|
算法 Java 程序员
[重学Python] Day6 面向对象编程 基础
面向对象编程基础讲解,包括类与对象的概念,类是对象的模板,对象是类的实例。Python中使用`class`定义类,通过`__init__`初始化对象。创建对象并调用方法如`drive`和`target_client`。访问权限在Python中相对宽松,使用单下划线表示受保护的属性。面向对象的三大支柱是封装、继承和多态,封装是隐藏实现细节,仅暴露简单接口。提供了数字时钟和平面上的点的类定义作为练习示例。
11 0
|
7天前
|
算法 Python
Python面向对象oop编程(二)
Python面向对象oop编程(二)
|
12天前
|
运维 算法 Shell
第六章 Python类(面向对象编程)
第六章 Python类(面向对象编程)
|
12天前
|
Python
Python从入门到精通:深入学习面向对象编程——2.1.2继承、封装和多态的概念
Python从入门到精通:深入学习面向对象编程——2.1.2继承、封装和多态的概念
|
12天前
|
设计模式 算法 程序员
Python从入门到精通:2.1.3深入学习面向对象编程——设计模式的学习与实践
Python从入门到精通:2.1.3深入学习面向对象编程——设计模式的学习与实践
|
12天前
|
数据安全/隐私保护 Python
Python从入门到精通——2.2.1深入学习面向对象编程:类和对象的定义
Python从入门到精通——2.2.1深入学习面向对象编程:类和对象的定义
|
17天前
|
数据安全/隐私保护 Python
python基础之面向对象
面向对象编程(OOP)是一种以对象为中心的编程范式,通过对象和类实现现实世界的抽象。对象是程序的基本单元,类是对象的模板。主要特点包括:封装,通过访问修饰符隐藏对象内部细节,保证数据安全;继承,子类继承父类属性和方法,实现代码复用;多态,同方法调用在不同对象上产生不同行为,增强灵活性。示例代码展示了Python中的类定义、封装、继承和多态概念。
|
18天前
|
存储 数据安全/隐私保护 Python
《Python 简易速速上手小册》第4章:Python 面向对象编程(2024 最新版)
《Python 简易速速上手小册》第4章:Python 面向对象编程(2024 最新版)
30 0