![]() |
1
64
就我所知
其他“神奇的方法”(实际上叫做 在Python民间传说中)有很多意义,其他语言中也存在类似的功能。它们主要用于在使用特殊语法时隐式调用的代码。
等等。。。 |
![]() |
2
21
来自Python的禅宗:
对于许多类型的对象来说,所有常见的操作都被放入魔术方法中,比如
运算符重载也可以通过魔术方法完成(例如。
|
![]() |
3
15
Python使用这个词 “神奇的方法” ,因为这些方法对你的程序来说真的很神奇。使用Python的magic方法的最大优点之一是,它们提供了一种简单的方法,使对象的行为类似于内置类型。这意味着您可以避免执行基本运算符的丑陋、反直觉和非标准方式。
这会产生一个错误,因为字典类型不支持加法。现在,让我们扩展dictionary类并添加 “添加” 魔术法:
现在,它给出以下输出。
因此,通过添加此方法,突然魔法发生了,您之前得到的错误消失了。
A Guide to Python's Magic Methods (Rafe Ketter,2012年) |
![]() |
4
9
你也可以100%确定
其他一些实现相对复杂的函数(比底层的magic方法可能更复杂)是
|
![]() |
5
4
它们不是真正的“神奇名字”。它只是一个对象为提供给定服务而必须实现的接口。从这个意义上说,它们并不比您必须重新实现的任何预定义接口定义更神奇。 |
![]() |
6
1
虽然原因主要是历史原因,但Python的
例如,Python中的一些操作是作为方法实现的
说到这里,
简言之,在对象构造期间,类可以实现一组非常常见的特性,这些特性可以通过操作符、通过特殊函数(通常比操作符的实现做得更多)进行访问,所有这些特性都有一些共同的特性。剩下的都是方法。以及
|
![]() |
7
0
以上两个帖子没有太多的补充,但所有的“神奇”功能其实一点也不神奇。它们是内置模块的一部分,该模块在解释器启动时隐式/自动导入。即。:
每次程序启动前都会发生。 我一直认为,如果Python只对交互式shell执行此操作,并且需要脚本从所需的内置程序中导入各个部分,那就更正确了。也可能不同的主处理方式在shell和交互式中会更好。不管怎样,请查看所有函数,看看没有它们会是什么样子:
|