常见的 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