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

 



相关文章
|
3月前
|
Java 程序员 C++
Python 面向对象详解!
本文详细介绍了Python中的面向对象编程(OOP),包括类、对象、继承、封装、多态和抽象等核心概念。通过具体示例,解释了如何使用类定义对象的属性和方法,以及如何通过继承实现代码重用。文章还探讨了封装和多态的重要性,并介绍了私有属性和抽象类的使用方法。最后,总结了OOP的四大支柱:封装、抽象、继承和多态,强调了这些概念在Python编程中的应用。适合Java程序员扩展Python编程知识。
85 2
|
1月前
|
关系型数据库 开发者 Python
Python编程中的面向对象设计原则####
在本文中,我们将探讨Python编程中的面向对象设计原则。面向对象编程(OOP)是一种通过使用“对象”和“类”的概念来组织代码的方法。我们将介绍SOLID原则,包括单一职责原则、开放/封闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则有助于提高代码的可读性、可维护性和可扩展性。 ####
|
5月前
|
Python
你真的会面向对象吗!解密Python“魔术方法”
你真的会面向对象吗!解密Python“魔术方法”
50 0
|
3月前
|
Python
Python面向对象(2)
【10月更文挑战第14天】
Python面向对象(2)
|
3月前
|
设计模式 程序员 C语言
Python面向对象
【10月更文挑战第13天】
Python面向对象
|
3月前
|
Java C# Python
Python学习七:面向对象编程(中)
这篇文章是关于Python面向对象编程的中级教程,涵盖了析构函数、对象的三大特征(封装、继承、多态)、类属性与实例属性、以及类方法与静态方法的对比。
41 2
|
3月前
|
设计模式 安全 JavaScript
Python学习八:面向对象编程(下):异常、私有等
这篇文章详细介绍了Python面向对象编程中的私有属性、私有方法、异常处理及动态添加属性和方法等关键概念。
30 1
|
4月前
|
前端开发 Python
Python编程的面向对象有哪些(二)
Python编程的面向对象(二)—类的多态
30 7
|
4月前
|
IDE Java 开发工具
Python类与面向对象
Python类与面向对象
|
4月前
|
存储 Java 程序员
30天拿下Python之面向对象编程
30天拿下Python之面向对象编程
24 3