课程首页 › 第8章 › 第47课

第47课 对象的动作

第8章 类与对象的奥秘· 知识点:类与对象 · 原书 8.5

在主程序中,我们调用了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

类的三大特性