[Python]关于__str__() 方法


    在打印一个实例化对象时,打印的其实时一个对象的地址。
    而通过__str__()函数就可以帮助我们打印对象中具体的属性值,或者你想得到的东西。

    在python中调用print()打印实例化对象时,会调用__str__()如果__str__()中有返回值,就会打印其中的返回值。
"""定义一个猫类"""
class Cat:

    """在创建完对象之后 会自动调用, 它完成对象的初始化的功能"""
    def __init__(self, new_name, new_age):

        # self.name = "汤姆"
        # self.age = 2

        # 它是一个对象中的属性,在对象中存储,即只要这个对象还存在,那么这个变量就可以使用
        self.name = new_name
        self.age = new_age  

        # 它是一个局部变量,当这个函数执行完之后,这个变量的空间就没有了,因此其他方法不能使用这个变量
        # ① num = 10  

    """返回一个对象的描述信息"""
    def __str__(self):

        #若去掉注释①会报错,NameError: name 'num' is not defined
        # ① print(num)
        return "名字是:%s , 年龄是:%d" % (self.name, self.age)

    def eat(self):
        print("%s在吃鱼...." % self.name)

    def drink(self):
        print("%s在喝水..." % self.name)

    def introduce(self):
        # print("名字是:%s, 年龄是:%d" % (汤姆的名字, 汤姆的年龄))
        # print("名字是:%s, 年龄是:%d" % (tom.name, tom.age))
        print("名字是:%s, 年龄是:%d" % (self.name, self.age))


"""创建了一个对象"""
tom = Cat("汤姆", 3)
print(tom)


"""输出结果"""
名字是:汤姆 , 年龄是:3
总结:
    1.在python中方法名如果是__xxxx__()的,那么就有特殊的功能,叫做“魔法”方法
    2.当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据
    3.__str__方法需要返回一个字符串,当做这个对象的描写