在Python中,魔术方法(也称为特殊方法或双下划线方法)是具有特殊名称和功能的方法,它们在类中起着重要作用。这些方法的名称以双下划线开头和结尾,例如 __init__
、__str__
、__add__
等。它们用于定义类的行为,使得类的实例可以在某些操作中表现得像内置类型一样。下面是一些常用的魔术方法的示例:
__init__
__init__
方法是类的构造方法,它在创建对象时自动调用,用于初始化对象的属性。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# 创建Person类的实例
person = Person("Alice", 30)
__str__
__str__
方法用于定义对象的字符串表示形式,通常用于 print
函数和 str()
转换。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"{self.name}, {self.age} years old"
person = Person("Alice", 30)
print(person) # 输出: "Alice, 30 years old"
__add__
__add__
方法用于定义对象的加法操作。
class ComplexNumber:
def __init__(self, real, imag):
self.real = real
self.imag = imag
def __add__(self, other):
return ComplexNumber(self.real + other.real, self.imag + other.imag)
num1 = ComplexNumber(1, 2)
num2 = ComplexNumber(3, 4)
result = num1 + num2
print(result.real, result.imag) # 输出: 4 6
__len__
__len__
方法用于定义对象的长度。
class MyList:
def __init__(self, items):
self.items = items
def __len__(self):
return len(self.items)
my_list = MyList([1, 2, 3, 4, 5])
print(len(my_list)) # 输出: 5
__getitem__
和 __setitem__
__getitem__
和 __setitem__
方法用于定义对象的索引操作。
class MyList:
def __init__(self, items):
self.items = items
def __getitem__(self, index):
return self.items[index]
def __setitem__(self, index, value):
self.items[index] = value
my_list = MyList([1, 2, 3, 4, 5])
print(my_list[2]) # 输出: 3
my_list[2] = 10
print(my_list[2]) # 输出: 10
这些魔术方法允许你自定义类的行为,使其更符合你的需求。通过合理使用魔术方法,你可以创建具有强大功能的自定义类,并且可以与内置类型一样方便地使用它们。