常见的 Python 魔术方法
基本概念
魔术方法是以双下划线开头和结尾的特殊方法,也称为“特殊方法”或“dunder 方法”。它们让我们可以定义类的行为。
__init__
方法
__init__
方法用于初始化对象的属性。
class Person:
def __init__(self, name):
self.name = name
每当创建新实例时,__init__
会被自动调用。
__str__
和 __repr__
方法
__str__
和 __repr__
方法用于定义对象的字符串表示。
class Person:
def __str__(self):
return f"Person: {self.name}"
def __repr__(self):
return f"Person(name={self.name})"
__str__
返回用户友好的字符串,而 __repr__
返回开发者友好的字符串。
__add__
方法
__add__
方法用于重载加法运算符。
class Number:
def __init__(self, value):
self.value = value
def __add__(self, other):
return Number(self.value + other.value)
在这个例子中,我们定义了如何将两个 Number
对象相加。
__len__
方法
__len__
方法用于定义对象的长度。
class MyList:
def __init__(self, items):
self.items = items
def __len__(self):
return len(self.items)
当调用 len()
函数时,会返回 MyList
对象中的元素数量。
__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
这使得我们可以使用索引访问和修改 MyList
对象的元素。
总结
总结一下,Python 的魔术方法让我们可以自定义对象的行为,使得代码更直观和易用。理解这些方法,将帮助我们更好地使用 Python 面向对象编程。
License:
CC BY 4.0