Python中的Magic method)

发布时间 2024-01-03 16:24:30作者: 半度墨水

以首字母排序,记一下python中这些常见的magic method

Python 中的 "魔术方法"(magic methods),又称为特殊方法,是一组预定义的方法,它们以双下划线(__)开始和结束。这些方法使得开发者能够对内建的 Python 行为进行自定义或扩展。实现这些方法有几个主要好处:

  1. 更自然的语言表达:魔术方法使得对象可以模拟内置类型的行为。例如,通过定义 __add__ 方法,可以让自定义对象支持 + 运算符。这使得代码更易读和更自然。

  2. 与 Python 的核心特性兼容:魔术方法使得自定义对象能够与 Python 的核心特性和语法结构兼容,比如迭代、上下文管理(with 语句)、数值运算等。

  3. 面向对象编程的增强:魔术方法提供了一种方式来实现面向对象的关键特性,如封装、继承和多态。

  4. 接口和抽象层的创建:通过定义魔术方法,可以创建符合特定接口或抽象层的类,这有助于构建更加模块化和可重用的代码。

  5. 操作重载(Operator Overloading):魔术方法使得开发者能够为自定义对象定义操作符的行为,这在创建数学或科学计算软件时尤其有用。

  6. 与 Python 内置函数和语法的无缝集成:许多魔术方法允许自定义对象与 Python 的内置函数(如 len()str())和语法结构(如 for 循环、if 语句)无缝集成。

 

__call__(self [, xxx] )

最重要的应该使得该类的实例对象变为可调用的,而不实现之前应该是不能被调用的。更具体的说,把实例对象当作一个函数了,可以接受参数,实现在call方法中的逻辑。

(未实现call时)

(实现call方法)

 总结:

1. 多了一个调用方法的路径,代码更简洁,可读性仁者见仁智者见智。(个人觉得《实例.方法名》更方便理解)

2. python 可调用对象: 可以通过内置函数callable来判断:print(callable(instance))   #  True


 

__init__(self [, xxx] )

 

 

 

持续更新。。。

参考来源:

chatGPT4

call(): https://blog.51cto.com/u_15274944/2921682