python中__str__和__repr__的区别
时间: 2023-10-25 17:10:30 浏览: 41
在Python中,`__str__`和`__repr__`都是用于控制对象的字符串表示的方法,但是它们的目的略有不同。
`__str__`方法是为了给用户提供一个友好的、可读的对象字符串表示,通常用于打印输出或是在日志中记录。如果一个对象没有实现`__str__`方法,则会使用`__repr__`方法进行代替输出,如果`__repr__`也没有实现,则会输出默认的字符串。
`__repr__`方法的作用是返回一个对象的“官方”字符串表示,用于调试和开发,通常包含对象的类型信息和重要属性值等。如果一个对象没有实现`__repr__`方法,则会使用默认的实现,即输出对象的类名和内存地址。
简单来说,`__str__`是为了让对象在用户界面中更加易读和友好,而`__repr__`是为了给开发者提供更多的信息来帮助调试和开发。
相关问题
python__repr__和__str__区别
__repr__和__str__都是Python中用于表示对象的方法,但是它们的作用不同。__repr__用于返回一个对象的“官方”字符串表示,而__str__用于返回一个对象的“非正式”或“友好”字符串表示。
__repr__方法返回的字符串应该是一个可以用来表示该对象的表达式,通常应该是一个可以用来创建该对象的字符串表达式。而__str__方法返回的字符串通常是一个更加友好和易读的字符串,用于打印或显示给终端用户。
以下是一个例子,展示了__repr__和__str__方法的区别:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return 'Person(name={}, age={})'.format(self.name, self.age)
def __str__(self):
return '{} - {}'.format(self.name, self.age)
p = Person('Alice', 25)
print(repr(p)) # 输出:Person(name=Alice, age=25)
print(str(p)) # 输出:Alice - 25
```
在上面的例子中,__repr__方法返回了一个可以用来创建该对象的字符串表达式,而__str__方法返回了一个更加友好和易读的字符串。
python __repr__
在Python中,`__repr__`是一个特殊方法,用于返回一个对象的字符串表示形式。这个字符串应该是一个可以用来重新创建该对象的Python表达式。如果没有实现`__str__`方法,那么在打印对象时,Python会调用`__repr__`方法来获取对象的字符串表示形式。如果同时实现了`__repr__`和`__str__`方法,那么在打印对象时,Python会调用`__str__`方法来获取对象的字符串表示形式,而在交互式环境下输入对象名并回车时,Python会调用`__repr__`方法来获取对象的字符串表示形式。
下面是一个示例代码:
```
class A(object):
def __init__(self):
pass
def __repr__(self):
return "repr"
a = A()
print(a)
```
输出结果为:
```
repr
```
这是因为我们没有实现`__str__`方法,所以Python调用了`__repr__`方法来获取对象的字符串表示形式。
另外,下面是一个示例代码,演示了同时实现`__repr__`和`__str__`方法的情况:
```
class A(object):
def __repr__(self):
return 'repr'
def __str__(self):
return 'str'
a = A()
print(a) # 调用__str__方法,输出str
```
输出结果为:
```
str
```