在描述一个普通类中的特殊类时,有时添加的细节越来越多,代码会很冗长,既不方便读取也不方便他人理解你编写的类,这时可以将类中的大块部分独立出来当做一个新的类,用该类的实例作为要描述的类中的属性。比如描述电动汽车,可能电瓶信息要占据很大部分篇幅,此时就可以将电池信息及方法作为独立的类,在描述电动汽车时可以用该类创建的实例来当做其属性。
对狗狗的类,需要重复打印其相关信息,此时可以将打印信息的方法及信息作为实例去创建狗狗的类。专业一点的说法据说叫封装:
1、定义狗狗信息的类,其中包含名字,年龄属性;定义打印狗狗信息的方法,用于打印狗狗的信息;
2、定义一个Dog类,狗狗名字和年龄属性的信息传递方式跟以往不同;
3、定义改名字,年龄递增,重新打印信息的方法;
4、创建名为dg的狗狗实例,通过调用方法,实现改名,年龄递增并打印相关信息。
1、将信息属性封装,然后通过实例传递属性是简洁且易于理解的方式;
2、实例传递属性时任然要传递给属性,代码中是self.info这一属性;
3、实例包含相关的形参;
没有看大大的代码,按自己理解的方式重写打印信息的方式,结果出现了一定的偏差。
思考之后,发现重写方法时,多用了一个print语句,因为在实例中本身包含了打印信息的语句,再打印调用方法的属性时没有任何东西,只能打印出空值(打印再打印 = 没东西可打)。修改之后恢复正常。
可以看出通过实例来当作属性的方式定义类时,在创建该类的实例将自动包含实例所表示的类信息,实现了一定程度上到我自动化。对包含属性的实力类可以做任意改动而不会让类显得混乱不堪。