当前位置: 技术文章>> 100道python面试题之-什么是Python中的魔法方法(Magic Methods)或特殊方法?请举例说明。

文章标题:100道python面试题之-什么是Python中的魔法方法(Magic Methods)或特殊方法?请举例说明。
  • 文章分类: 后端
  • 8079 阅读
Python中的魔法方法(Magic Methods)或特殊方法,是指那些以双下划线(`__`)开始和结束的方法。这些方法在Python中扮演着特殊角色,用于实现类的特殊功能或行为,如初始化对象、定义对象的字符串表示、实现运算符重载等。以下是一些常见的魔法方法及其示例: ### 1. `__init__(self, [...])` * **作用**:类的构造函数,用于在对象创建时初始化其状态。 * **示例**: ```python class Book: def __init__(self, title, author): self.title = title self.author = author book = Book("The Catcher in the Rye", "J.D. Salinger") print(book.title) # 输出: The Catcher in the Rye ``` ### 2. `__str__(self)` * **作用**:定义对象的字符串表示形式,当使用`print()`函数或`str()`函数时会被调用。 * **示例**: ```python class Book: def __init__(self, title, author): self.title = title self.author = author def __str__(self): return f"{self.title} by {self.author}" book = Book("The Catcher in the Rye", "J.D. Salinger") print(book) # 输出: The Catcher in the Rye by J.D. Salinger ``` ### 3. `__repr__(self)` * **作用**:返回对象的官方字符串表示,主要用于开发者调试。 * **示例**: ```python class Book: def __init__(self, title, author): self.title = title self.author = author def __repr__(self): return f"Book(title={self.title!r}, author={self.author!r})" book = Book("The Catcher in the Rye", "J.D. Salinger") print(repr(book)) # 输出: Book(title='The Catcher in the Rye', author='J.D. Salinger') ``` ### 4. `__add__(self, other)` * **作用**:定义对象间的加法操作,允许使用`+`运算符。 * **示例**(假设我们有一个自定义的数值类型): ```python class Vector: def __init__(self, x, y): self.x = x self.y = y def __add__(self, other): return Vector(self.x + other.x, self.y + other.y) v1 = Vector(1, 2) v2 = Vector(3, 4) v3 = v1 + v2 print(v3.x, v3.y) # 输出: 4 6 ``` ### 5. `__call__(self, [...])` * **作用**:使对象可以像函数一样被调用。 * **示例**: ```python class Adder: def __init__(self, x): self.x = x def __call__(self, y): return self.x + y adder = Adder(5) print(adder(3)) # 输出: 8 ``` ### 6. `__len__(self)` * **作用**:定义对象的长度,当使用`len()`函数时会被调用。 * **示例**: ```python class MyList: def __init__(self, *args): self.items = list(args) def __len__(self): return len(self.items) my_list = MyList(1, 2, 3) print(len(my_list)) # 输出: 3 ``` ### 7. 其他魔法方法 Python中还有许多其他魔法方法,如`__getitem__`、`__setitem__`用于实现索引操作,`__eq__`、`__lt__`用于实现比较操作,`__iter__`、`__next__`用于实现迭代器协议等。这些魔法方法共同构成了Python中面向对象编程的强大功能。 综上所述,Python中的魔法方法是实现类特殊功能的关键,掌握它们对于深入理解Python的面向对象编程具有重要意义。
推荐文章