def __init__和def__repr__和__str__有什么区别,分别有什么用
时间: 2023-10-25 19:07:05 浏览: 37
`__init__`是一个特殊的方法,用于初始化一个类的实例。它在创建一个新的对象时被调用,并且可以用来设置初始状态或执行其他必要的操作。通常在这里进行属性的初始化。
`__repr__`是另一个特殊的方法,用于返回一个对象的“官方”字符串表示形式。它应该是一个可以用来重新创建对象的Python表达式,即使用`eval(repr(obj))`应该返回一个等价的对象。通常在调试和测试期间使用。
`__str__`也是一个特殊的方法,用于返回一个对象的字符串表示形式。与`__repr__`不同,`__str__`方法不需要返回一个Python表达式,而是返回一个更人类可读的字符串。通常在应用程序中使用。
简单来说,`__init__`是在创建对象时初始化属性,`__repr__`用于调试和测试,`__str__`用于应用程序中的可读字符串输出。
相关问题
__repr__和__str__有什么区别
__repr__和__str__是Python中两个特殊的方法,用于定制对象的字符串表示形式。它们之间的区别如下:
1. __repr__方法返回一个对象的“官方”字符串表示形式,通常用于开发人员调试和诊断。它应该是明确无误的,包含足够的信息以便于重新创建该对象。如果没有定义__str__方法,Python会使用__repr__方法作为默认的字符串表示形式。
2. __str__方法返回一个对象的“友好”字符串表示形式,通常用于用户界面和打印输出。它应该是可读的,但不一定是准确的或完整的。
简而言之,__repr__方法提供了一个详细的、准确的字符串表示形式,而__str__方法提供了一个更友好的、可读的字符串表示形式。
以下是一个示例,演示了__repr__和__str__的区别:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person(name='{self.name}', age={self.age})"
def __str__(self):
return f"Person: {self.name}, {self.age} years old"
person = Person("Alice", 25)
print(repr(person)) # 输出:Person(name='Alice', age=25)
print(str(person)) # 输出:Person: Alice, 25 years old
```
__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')
```