Python中repr()函数与内建函数__repr__()的关系
发布时间:2024-01-04 04:53:24
在Python中,repr()函数用于返回一个对象的字符串表示形式,这个字符串可以用来重新创建这个对象。而__repr__()是一个内建函数,用于返回对象的字符串表示形式。
repr()函数可以接受任何对象作为参数,并返回该对象的字符串表示形式。这个字符串由对象的类名和一些重要的属性组成,通常用来调试和开发目的。以下是一个例子:
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})"
person = Person("Alice", 25)
print(repr(person)) # 输出:Person(name='Alice', age=25)
在这个例子中,__repr__()方法被重写以返回一个以类名为前缀的字符串,包含了对象的name和age属性。
repr()函数与__repr__()方法的关系是,当调用repr()函数时,它会去调用对象的__repr__()方法来获取字符串表示形式。因此,以上例子中,输出结果与person.__repr__()是一样的。
需要注意的是,repr()函数对于内建类型和大多数自定义类型都有默认的实现。对于内建类型,它会返回一个可以被eval()函数用来重新创建该对象的字符串。以下是一些例子:
repr(1) # 输出:'1'
repr(1.5) # 输出:'1.5'
repr(True) # 输出:'True'
repr("Hello") # 输出:"'Hello'"
repr([1, 2, 3]) # 输出:'[1, 2, 3]'
repr({"name": "Alice", "age: 25"}) # 输出:'{"name": "Alice", "age": 25}'
对于自定义类,如果没有定义__repr__()方法,repr()函数会返回一个默认的字符串表示形式,类似于<__main__.Person object at 0x7f0e2f8dcf10>。这通常不够有用,因此推荐在自定义类中重写__repr__()方法来提供更有意义的表示形式。
总结来说,repr()函数是用于返回一个对象的字符串表示形式的函数,它会调用对象的__repr__()方法来获取字符串表示形式。__repr__()方法是一个内建函数,用于返回对象的字符串表示形式。通过重写__repr__()方法,我们可以为自定义类提供有意义的字符串表示形式。
