__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中,魔法函数(Magic Methods)是一种特殊的方法,它们以双下划线(__
)开头和结尾,这些函数在特定的情况下会被自动调用,例如当我们使用特定的运算符或者函数时,以下是一些常见的Python魔法函数:
1、__init__(self, ...)
: 构造函数,当创建对象时自动调用。
2、__str__(self)
: 当使用print()
函数打印对象时,会自动调用此方法返回一个字符串表示。
3、__repr__(self)
: 当使用repr()
函数打印对象时,会自动调用此方法返回一个字符串表示。
4、__add__(self, other)
: 当使用+
运算符进行加法操作时,会自动调用此方法。
5、__sub__(self, other)
: 当使用运算符进行减法操作时,会自动调用此方法。
6、__mul__(self, other)
: 当使用*
运算符进行乘法操作时,会自动调用此方法。
7、__truediv__(self, other)
: 当使用/
运算符进行除法操作时,会自动调用此方法。
8、__floordiv__(self, other)
: 当使用//
运算符进行整除操作时,会自动调用此方法。
9、__mod__(self, other)
: 当使用%
运算符进行取模操作时,会自动调用此方法。
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