30-Python内置方法之__str__和__repr__

定义一个类,然后实例化,观察打印结果:

 1 >>> class Person(object):
 2 ...     def __init__(self, name, age):
 3 ...         self.name = name
 4 ...         self.age = age
 5 ...         
 6 >>> p = Person("druid", 18)
 7 >>> p
 8 <Person object at 0x11044b160>  # 直接调用对象打印的是内存地址
 9 >>> print(p)
10 <Person object at 0x11044b160>  # 用print打印仍然是内存地址

在类中增加__str__方法,观察打印结果:

 1 >>> class Person(object):
 2 ...     def __init__(self, name, age):
 3 ...         self.name = name
 4 ...         self.age = age
 5 ... 
 6 ...     def __str__(self):
 7 ...         return "{}-{}".format(self.name, self.age)
 8 ...     
 9 >>> p1 = Person("druid", 18)
10 >>> p1
11 <Person object at 0x1105899e8>  # 直接调用对象打印的是内存地址
12 >>> print(p1)
13 druid-18  # 用print打印的是__str__返回的string

在类中增加__repr__方法,观察打印结果:

 1 >>> class Person(object):
 2 ...     def __init__(self, name, age):
 3 ...         self.name = name
 4 ...         self.age = age
 5 ... 
 6 ...     def __repr__(self):
 7 ...         return "{}-{}".format(self.name, self.age)
 8 ...     
 9 >>> p2 = Person("druid", 18)
10 >>> p2
11 druid-18  # 直接调用对象打印的是__repr__返回的string
12 >>> print(p2)
13 druid-18  # 用print打印仍然是__repr__返回的string
原文地址:https://www.cnblogs.com/Druidchen/p/9329194.html