第47课 对象的动作
在主程序中,我们调用了update()方法,并且将“米粒”作为参数,传递给函数。
程序运行结果显示,我们通过update()方法将name属性成功更新为米粒。
动物不仅有自己的属性,还有自己的动作,例如叫、跑、吃等。
接下来,我们要让对象拥有自己的动作,在类中的动作是通过函数来定义的。

程序运行结果如下:
我是柯基,我在跑。
通过class Animal创建了Animal类,创建Animal类的run()方法也就是Animal类的run动作。
通过__init__方法初始化了dog对象的name属性为柯基,weight属性为10,legNum属性为4。
通过dog.run()调用dog对象的run动作。从程序运行结果可以看到我是柯基,我在跑,赋予了柯基跑的能力。
在前面的例子中,都是通过print("我是一只狗狗,我的名字是:
,重量是,有条腿。%s %d kg %d"(dog.name,dog.weight,dog.legNum))来打印dog对象的相关属性
%的,每次要打印都要写这么一长段。

我们来试试直接打印实例对象dog,看看会得到什么?
想想很简单,用print()方法将它打印出来看看,一起来试试。

我们一起来看程序运行结果:
<__main__.Animal object at 0x000001E69096BCD0>

在程序中,通过print()函数来打印实例对象dog,结果打印出了一串我们不认识的字符。这不是我们想要的结果,那要怎么打印才能得到我
们想要的结果呢?
Python给我们提供了另一个魔术方法__str__(),可以按照指定的格式打印出dog对象的字符串格式。
我们来尝试一下吧。

程序运行结果如下:
我的名字是柯基,体重是,我有条腿。
10kg 4
在Animal类中增加了一个新方法:__str__(),作用是将实例对象的内容按照方法中指定的格式打印出来。当在dog对象中调用print(dog)时,会调用__str__()方法将对象按照方法中指定的格式打印出来。
在__str__()方法中,指定的格式是:我的名字是,体重是,
%s %d kg我有条腿,所以程序结果打印出了我的名字是柯基,体重是
%d,我有条腿。10 kg 4