__repr__ = __str__
时间: 2023-10-21 17:04:00 浏览: 106
在Python中,`__repr__()`和`__str__()`是两个特殊方法,用于定义对象的字符串表示形式。当我们调用`print()`函数或使用`str()`内置函数时,会自动调用`__str__()`方法来获取对象的字符串表示。而当我们使用`repr()`内置函数或在交互式解释器中直接输入对象名时,会调用`__repr__()`方法来获取对象的字符串表示。
如果你想让`__str__()`返回与`__repr__()`相同的值,你可以简单地将它们两个方法的实现代码设置成一样的即可,例如:
```python
def __repr__(self):
return self.__str__()
def __str__(self):
return "This is the string representation of the object."
```
这样,无论是通过`print()`函数还是通过交互式解释器,都会得到相同的字符串表示。
相关问题
__str__和__repr__
__str__和__repr__都是Python中的内置方法,用于返回对象的字符串表示形式。
__str__方法是面向用户的,主要用于打印对象时提供可读性更好的输出。它应该返回一个描述对象的字符串。
__repr__方法是面向程序员的,主要用于在交互式环境下显示对象的详细信息。它应该返回一个可以用来重新创建对象的字符串表示。
举个例子,假设有一个名为Test的类,该类定义了__str__和__repr__方法。当我们打印该类的实例时,Python会调用__repr__方法来获取对象的字符串表示形式。当我们使用print函数来输出该实例时,Python会调用__str__方法来获取对象的字符串表示形式。
比如,在例子中,当我们打印t这个实例时,由于没有定义__str__方法,Python会调用__repr__方法来获取对象的字符串表示形式,所以打印出来的结果是'铁锤'。而当我们使用print函数来输出t时,Python会调用__str__方法,所以打印出来的结果是'砖头'。
总结来说,__str__方法是为了提供可读性更好的输出,而__repr__方法是为了提供对象的详细信息以便于调试和重建。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Python中的__repr__和__str__](https://blog.csdn.net/weixin_43901998/article/details/114296369)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
__str__和__repr__的区别
__str__和__repr__都是Python中的特殊方法,用于定制对象的字符串表示形式。它们的区别如下:
1. __str__方法:
- 作用:用于返回对象的可读性好的字符串表示形式,通常用于打印对象或者在交互式环境中显示对象。
- 调用方式:通过内置函数str()或者print()来调用。
- 示例代码:
```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__方法:
- 作用:用于返回对象的官方字符串表示形式,通常包含创建该对象的Python表达式,可以用于重新创建该对象。
- 调用方式:通过内置函数repr()来调用,或者在交互式环境中直接输入对象名。
- 示例代码:
```python
class Person:
def __init__(self, name):
self.name = name
def __repr__(self):
return f"Person('{self.name}')"
p = Person("Alice")
repr(p) # 输出:Person('Alice')
```
阅读全文