Python中以"__"开头的函数
在Python中,有一些特殊的函数名以""开头和结尾。这些函数被称为特殊方法(Special Methods)或魔术方法(Magic Methods)。它们用于定制类的行为,可以让我们更方便地使用Python的内置功能,如迭代、比较、运算符重载等。本文将介绍Python中常用的以""开头的函数,并给出代码示例。
1. __init__
方法
__init__
方法是一个特殊的构造函数,用于创建对象时进行初始化操作。当我们实例化一个类的对象时,__init__
方法会自动调用,可以用来初始化对象的属性和其他必要的操作。
下面是一个简单的例子,演示了如何使用__init__
方法来初始化一个Person类的对象:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person = Person("Alice", 25)
print(person.name) # 输出: Alice
print(person.age) # 输出: 25
2. __str__
方法
__str__
方法用于返回一个可读性好的字符串,表示对象的信息。当我们使用print
函数打印一个对象时,实际上是调用了该对象的__str__
方法。
下面是一个示例,演示了如何定义__str__
方法来返回Person对象的信息:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Person(name={self.name}, age={self.age})"
person = Person("Alice", 25)
print(person) # 输出: Person(name=Alice, age=25)
3. __len__
方法
__len__
方法用于返回对象的长度或大小。当我们对一个对象使用内置的len
函数时,实际上是调用了该对象的__len__
方法。
下面是一个例子,演示了如何定义__len__
方法来返回列表对象的长度:
class MyList:
def __init__(self, data):
self.data = data
def __len__(self):
return len(self.data)
my_list = MyList([1, 2, 3, 4, 5])
print(len(my_list)) # 输出: 5
4. __getitem__
方法
__getitem__
方法用于获取对象的某个元素。当我们通过索引或切片访问一个对象时,实际上是调用了该对象的__getitem__
方法。
下面是一个例子,演示了如何定义__getitem__
方法来访问列表对象的元素:
class MyList:
def __init__(self, data):
self.data = data
def __getitem__(self, index):
return self.data[index]
my_list = MyList([1, 2, 3, 4, 5])
print(my_list[2]) # 输出: 3
print(my_list[1:4]) # 输出: [2, 3, 4]
5. __setitem__
方法
__setitem__
方法用于设置对象的某个元素的值。当我们通过索引或切片给一个对象赋值时,实际上是调用了该对象的__setitem__
方法。
下面是一个例子,演示了如何定义__setitem__
方法来设置列表对象的元素的值:
class MyList:
def __init__(self, data):
self.data = data
def __setitem__(self, index, value):
self.data[index] = value
my_list = MyList([1, 2, 3, 4, 5])
my_list[2] = 10
print(my_list.data) # 输出: [1, 2, 10, 4, 5]
6. __eq__
方法
__eq__
方法用于判断两个对象是否相等。当我们使用==
运算符比较两个对象时,实际上是调用了第一个对象的__eq__
方法,并将第二个对象作为参数传入。
下面是一个示例,演示了如何定义__eq__
方法来