__str__(self)和__repr__(self)怎么用的
时间: 2024-11-13 15:21:55 浏览: 8
Python中__repr__和__str__区别详解
5星 · 资源好评率100%
在Python中,`__str__(self)` 和 `__repr__(self)` 都是特殊方法(魔术方法),它们用于自定义对象的字符串表示形式,但功能略有不同。
1. **`__str__(self)`**: 这个方法通常用于用户交互或者日志记录等场景,当你需要将一个对象直接转换成易于理解的文本形式时调用。它的目的是提供一个"友好"的字符串表示,对于一般用途来说,应该是易读并且描述性的。例如:
```python
class Person:
def __init__(self, name):
self.name = name
def __str__(self):
return f"Person({self.name})"
p = Person("Alice")
print(p) # 输出: Person(Alice)
```
2. **`__repr__(self)`**: `__repr__(self)` 更加关注于生成一个"准确"的对象表示,主要是为了在调试时方便地重现对象。当你在交互式环境中使用 `id(object)` 或者在异常跟踪中看到对象的内部信息时,会调用这个方法。例如:
```python
class ComplexNumber:
def __init__(self, real, imag):
self.real = real
self.imag = imag
def __repr__(self):
return f"{self.__class__.__name__}({self.real}, {self.imag})"
c = ComplexNumber(1, 2j)
print(repr(c)) # 输出: ComplexNumber(1, 2j)
```
阅读全文