__repr__(self)
时间: 2023-11-01 17:08:40 浏览: 45
在Python中,__repr__(self)是一个特殊方法,用于返回对象的字符串表示形式。它通常被用于调试和日志记录的目的。当你在控制台中打印一个对象时,它会自动调用对象的__repr__()方法来获取字符串表示形式。
在给定的代码示例中,__repr__(self)方法被重写为返回一个自定义的描述字符串。当你打印一个Person对象时,它会显示为"Person类,有name和age两个属性"。这样做可以提供一个更加有意义和可读性的对象表示形式。
相关问题
__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')
```
怎么在类中定义__str__或__repr__方法
可以在类中定义__str__或__repr__方法来自定义对象的字符串表示形式。__str__方法用于返回对象的字符串表示形式,而__repr__方法用于返回对象的“官方”字符串表示形式,一般用于调试和开发过程中。这两个方法都应该返回一个字符串。
例如,我们定义一个类Person,它有name、age和gender三个属性,可以如下定义__str__和__repr__方法:
```python
class Person:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
def __str__(self):
return f"Person(name={self.name}, age={self.age}, gender={self.gender})"
def __repr__(self):
return f"Person(name={self.name}, age={self.age}, gender={self.gender})"
```
上面的代码中,__str__方法返回了一个格式化字符串,表示Person对象的name、age和gender属性的值。__repr__方法也返回了一个类似的格式化字符串,表示Person对象的属性值。
这样,在我们创建一个Person对象并打印它时,输出的就是对象的属性值,而不是对象在内存中的地址了。例如:
```python
person = Person("Alice", 20, "female")
print(person)
# 输出:Person(name=Alice, age=20, gender=female)
```