Python类和对象的问题

img


最后一个def str 是怎么执行出来的 为什么print(sue)就能执行出最后的效果

这个__str__函数应该是相当于 Java中的toString()方法,作用是打印出一个对象的属性 ;

如果使用print来打印要一个对象,然后又定义了__str__这个函数,应该就会自动调用这个函数,然后这个函数就根据slef来获取对象的各个属性,然后就打印出图片中所示的各项属性输出了。

参考链接:


https://zhuanlan.zhihu.com/p/130442206

print一个类的时候就是在调用类内部的str方法
如果你没有重写这个方法,那么默认打印的是类名和地址
你重写了那么str里返回什么就打印什么
python里所有的类,不写继承的时候默认继承的是object这个基类,里面其实已经写好了一些方法的

print(sue)执行时就会调用对象的__str__方法

有帮助的话,请点采纳该答案~

这是固定的类对象转换为字符串的函数格式。跟JAVA的ToString一样
类似的函数包括__init__是初始化函数

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

    # 重写__str__()函数,自定义对象转字符串的格式
    def __str__(self):
        return ("姓名:%s\t年龄:%d" % (self.name, self.age))

print(sue)会调用字符串转换,这是python的约定