最新消息:

python青少年编程第三季——07、油量报警程序升级版之__str__()

Python 少儿编程 1670浏览 0评论
Python青少年编程第三季

各位小伙伴大家好:

上期我们完成了一个模拟的油量报警程序,本期我们用str方法来稍稍修改一下我们的程序。

 

首先还是来介绍一下__str__方法,str是英文string字符串的缩写。在Python中以双下划线__开始并且以双下划线__结束的方法是实现特定功能的特殊方法。

 

这样的特殊方法有很多,除了像__init__和__str__之外还有诸如:__del__(析构函数)  __cmp__(比较方法)  __mul__(数学乘法)  __sub__(数学减法)等,有兴趣的小伙伴可以自己去了解,这里就不给大家copy了。

 

接下来看一段示例代码

 

python青少年编程第三季——07、油量报警程序升级版之__str__()

 

代码只有三行,前两行定义了一个Dog类,这个类什么都没写,只是用一个pass来占位,以免程序运行时报错。

 

第三行直接print我们所定义的类,结果在图片左上角。打印了一段描述信息,表示这是当前程序的一个类。至于__main__我们后面再来了解。

 

貌似看不出什么名堂,下面我们实例化一个对象,来做个比较。

 

python青少年编程第三季——07、油量报警程序升级版之__str__()

 

实例化一个puppy对象,同样是直接print对象名puppy。从右侧的结果可以看出,打印对象和打印类有所不同,打印对象除了会显示对象所属的类Dog,并且会在最后还输出这个对象的地址

 

这个地址就是实例化对象之后,程序向系统申请的内存空间的地址,也是就是puppy所指向的内存地址。

 

这就是在没有定义str方法的情况下,我们print类或对象名所能得到返回信息。

 

下面我们在类中写上一个str方法,看看会有什么不同

 

python青少年编程第三季——07、油量报警程序升级版之__str__()

 

在类中定义一个str方法之后,我们再来print对象名,结果所返回的信息就是我们在str方法返回值——字符串(小狗)。

 

换句话说就是,我们在str方法中return返回的是什么,将来用print打印出来就是什么。

 

比如我们上面在str中返回一个字符串(小狗),那么我们print(puppy)出来的就是:小狗,这就是str的最基本的作用。

 

另外从例子中我们可以看出,print(Dog)没有变化,我认为这是因为class的描述信息是系统写好的,我们并没有修改,所以不会改变。

 

下面我们用str方法来对上期的程序做一点小小的修改,来体验一下str的使用:

 

python青少年编程第三季——07、油量报警程序升级版之__str__()

 

这里的str方法返回的是实例属性oilvalue,所以我们在print(byd)的时候就会输出实例属性的值。

 

最后来背靠背,比比高:

 

python青少年编程第三季——07、油量报警程序升级版之__str__()

 

和前面的代码进行比较来看,使用str方法用print对象名的方式来输出信息,比调用实例方法要相对简洁一点,特别是在有很多实例对象的情况下。

 

你觉得呢?

 

好了,本期就为大家介绍到这里。

 

欢迎扫描下方二维码入群和我交流

  python青少年编程第三季——07、油量报警程序升级版之__str__()

 

转自公众号:
高维数学

您必须 登录 才能发表评论!