python里的魔法函数有哪些(python中的魔法函数)

Python中的魔法函数包括:__init__, __str__, __repr__, __add__, __sub__, __mul__, __truediv__, __floordiv__, __mod__, __pow__, __eq__, __ne__, __lt__, __le__, __gt__, __ge__, __and__, __or__, __not__, __call__, __getitem__, __setitem__, __delitem__, __len__, __contains__, __iter__, next等。
python里的魔法函数有哪些(python中的魔法函数)

在Python中,魔法函数(Magic Methods)是一种特殊的方法,它们以双下划线(__)开头和结尾,这些函数在特定的情况下会被自动调用,例如当我们使用特定的运算符或者函数时,以下是一些常见的Python魔法函数

1、__init__(self, ...): 构造函数,当创建对象时自动调用。

2、__str__(self): 当使用print()函数打印对象时,会自动调用此方法返回一个字符串表示。

3、__repr__(self): 当使用repr()函数打印对象时,会自动调用此方法返回一个字符串表示。

4、__add__(self, other): 当使用+运算符进行加法操作时,会自动调用此方法。

python里的魔法函数有哪些(python中的魔法函数)

5、__sub__(self, other): 当使用运算符进行减法操作时,会自动调用此方法。

6、__mul__(self, other): 当使用*运算符进行乘法操作时,会自动调用此方法。

7、__truediv__(self, other): 当使用/运算符进行除法操作时,会自动调用此方法。

8、__floordiv__(self, other): 当使用//运算符进行整除操作时,会自动调用此方法。

9、__mod__(self, other): 当使用%运算符进行取模操作时,会自动调用此方法。

python里的魔法函数有哪些(python中的魔法函数)

10、__pow__(self, other[, modulo]): 当使用**运算符进行幂运算时,会自动调用此方法。

11、__eq__(self, other): 当使用==运算符进行比较操作时,会自动调用此方法。

12、__ne__(self, other): 当使用!=运算符进行比较操作时,会自动调用此方法。

13、__lt__(self, other): 当使用<运算符进行比较操作时,会自动调用此方法。

14、__le__(self, other): 当使用<=运算符进行比较操作时,会自动调用此方法。

15、__gt__(self, other): 当使用>运算符进行比较操作时,会自动调用此方法。

16、__ge__(self, other): 当使用>=运算符进行比较操作时,会自动调用此方法。

17、__call__(self, *args, **kwargs): 当对象被当作函数调用时,会自动调用此方法。

18、__getitem__(self, key): 当使用索引操作(如a[0])访问对象的元素时,会自动调用此方法。

19、__setitem__(self, key, value): 当使用赋值操作(如a[0] = 1)设置对象的元素时,会自动调用此方法。

20、__delitem__(self, key): 当使用删除操作(如del a[0])删除对象的元素时,会自动调用此方法。

21、__iter__(self): 当使用迭代操作(如for循环)遍历对象的元素时,会自动调用此方法。

22、__next__(self): 当使用迭代操作(如for循环)遍历对象的元素时,会在每次迭代中自动调用此方法。

23、__len__(self): 当使用内置函数len()获取对象的长度时,会自动调用此方法。

24、__getattr__(self, name): 当尝试访问对象的一个不存在的属性时,会自动调用此方法。

25、__setattr__(self, name, value): 当尝试设置对象的一个属性的值时,会自动调用此方法。

26、__delattr__(self, name): 当尝试删除对象的一个属性时,会自动调用此方法。

27、__dir__(self): 当使用内置函数dir()获取对象的所有属性和方法列表时,会自动调用此方法。

28、__format__(self, format_spec): 当使用格式化操作(如"{} {}".format(a, b))格式化对象时,会自动调用此方法。

29、__contains__(self, item): 当使用in操作符检查对象是否包含某个元素时,会自动调用此方法。

30、__enter__(self)__exit__(self, exc_type, exc_value, traceback): 当使用with语句管理资源时,这两个方法会在进入和退出with语句块时自动调用。

相关问题与解答:

问题1:为什么我们需要知道Python的魔法函数?

答案:了解Python的魔法函数可以帮助我们更好地理解Python的工作原理,以及如何自定义类以满足我们的特定需求,通过重写魔法函数,我们可以改变类的默认行为,使其更符合我们的预期。

问题2:如果我不重写某个魔法函数,会发生什么?

答案:如果你不重写某个魔法函数,Python会按照其默认的行为来处理相应的操作,如果你没有重写__add__魔法函数,那么当你尝试对两个你的类的实例进行加法操作时,Python会尝试将这两个实例相加,如果这不可能(因为你的实例是不可变的),Python会抛出一个异常。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/476463.html

(0)
K-seoK-seoSEO优化员
上一篇 2024年5月10日 13:44
下一篇 2024年5月10日 13:50

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入