在Python中,"魔术"方法或魔术函数是指以双下划线(__
)开始和结束的特殊方法。这些方法有特殊的含义,通常用于实现类的某些特殊行为。以下是一些常见的魔术方法及其用法的示例:
__init__
- 构造函数,用于初始化新创建的对象:
python
class MyClass:
def __init__(self, value):
self.value = value
obj = MyClass(5)
print(obj.value) # 输出: 5
__str__
- 返回对象的字符串表示:
python
class MyClass:
def __str__(self):
return "MyClass instance"
obj = MyClass()
print(str(obj)) # 输出: MyClass instance
__repr__
- 返回对象的官方字符串表示(通常可以用于重新创建对象):
python
class MyClass:
def __repr__(self):
return "MyClass()"
obj = MyClass()
print(repr(obj)) # 输出: MyClass()
__eq__
- 实现对象之间的等价比较:
python
class MyClass:
def __init__(self, value):
self.value = value
def __eq__(self, other):
return self.value == other.value
obj1 = MyClass(5)
obj2 = MyClass(5)
print(obj1 == obj2) # 输出: True
__add__
- 实现对象之间的加法运算:
python
class MyClass:
def __init__(self, value):
self.value = value
def __add__(self, other):
return MyClass(self.value + other.value)
obj1 = MyClass(5)
obj2 = MyClass(7)
obj3 = obj1 + obj2
print(obj3.value) # 输出: 12
这些只是魔术方法的一些示例,还有许多其他的魔术方法,例如__getitem__
、__setattr__
、__del__
等,可用于实现各种自定义行为和操作。通过合理地使用这些魔术方法,可以创建具有丰富功能和良好接口的自定义对象。