python__repr__
方法
class Person():
def __init__(self,name,age):
self.name = name
self.age = age
person = Person('Major',22)
print(person)
# 内存中的一个对象 <__main__.Person object at 0x000002533CA1CCC0>
从上图打印的输出可以看出输出的是实例化的Person类,在内存中的对象
__repr__
是Python类中的一个特殊方法,由object对象提供,由于所有类都是object类的子类,所以都会继承该方法
object提供的这个__repr__
方法总是返回一个对象, ( 类名 + obejct at + 内存地址 )
,这个值并不能真正实现自我描述的功能
class Person():
def __init__(self,name,age):
self.name = name
self.age = age
def __repr__(self):
return '<{0}.{1} object at {2}>'.format(self.__module__,type(self).__name__,hex(id(self)))
person = Person('Major',22)
print(person) # <__main__.Person object at 0x5ba6a0>
如果你想在自定义类中实现 “自我描述” 的功能,那么必须重写 __repr__
方法:
class Person():
def __init__(self,name,age):
self.name = name
self.age = age
def __repr__(self):
return 'Person类,包含name='+self.name+'和age='+str(self.age)+'两个实例属性'
person = Person('Major',22)
print(person) # Person类,包含name=吕星辰和age=20两个实例属性