Python3基础-str与repr

__str__ 返回一个字符串,当做这个对象的描写

#没有__str__
class People:
    def __init__(self,name,age):
        self.name = name
        self.age = age


p1 = People('susu',18)
print(p1)

"""
执行结果如下
<__main__.People object at 0x03900C10>
"""
#存在__str__
class People:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def __str__(self):
        """返回一个对象的描述信息"""
        return "名字是:%s , 年龄是:%d" % (self.name, self.age)

p1 = People('susu',18)
print(p1)

"""
执行结果如下
名字是:susu , 年龄是:18
"""

__repr__

class People:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def __repr__(self):
        """返回一个对象的描述信息"""
        return "名字是:%s , 年龄是:%d" % (self.name, self.age)

p1 = People('susu',18)
print(p1)

"""
执行结果如下:
名字是:susu , 年龄是:18
"""

__str__ 和__repr__共存的情况下

class People:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def __str__(self):
        """返回一个对象的描述信息"""
        return "__str__名字是:%s , 年龄是:%d" % (self.name, self.age)

    def __repr__(self):
        """返回一个对象的描述信息"""
        return "__repr__名字是:%s , 年龄是:%d" % (self.name, self.age)

p1 = People('susu',18)
print(p1)

"""
执行结果如下:
__str__名字是:susu , 年龄是:18
"""

当打印People 的时候 , 默认会调用__str__() 方法

__repr__和__str__这两个方法都是用于显示的,__str__是面向用户的,而__repr__面向程序员

主要是 如果在控制台中  直接输入People则调用 __repr__ 方法, 看下图

注意事项:

注意 __str__和__repr__需要用 return 一定要返回一个str 类型 , 否则 会报错

TypeError: __str__ returned non-string (type NoneType)

 

 

 

posted @ 2019-11-21 10:46  槑槑DE  阅读(107)  评论(0编辑  收藏  举报