Python的类的构造函数、特殊属性、特殊方法与应用模块

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/suoyue_py/article/details/100576189

在浏览他人的程序代码时常常会遇到 __ xxx __ 类的字符串,对于初学者来说既看不懂语义,也不明白为什么要怎么写,删了有时又会出bug…
在这里插入图片描述
这些都属于Python的类的构造函数、特殊属性和特殊方法,对此简要说明一下几个常见的。

(一)Python类的构造函数

初始化类是在类内建立一个初始化方法(method),当在程序内定义这个类的对象时将自动执行这个方法。固定名称是“__ init __()” ,写法是在init左右皆是2个底线字符,init全称是initialization,通常又将这类初始化的方法称构造函数(constructor)。
在这里插入图片描述
定义Message类的a对象,Message类会自启动 __ init __() 初始化函数,定义中的self 是必需的,且需放在所有参数的最前面,Python在初始化时会自动传入这个参数self,代表的是类本身的对象,其他在类内想要参照各属性与函数执行运算皆要使用self。
print(a)没有正常输出字符串,具体解决方案查看下方 Python的特殊方法里的repr方法

(二)Python的特殊属性

1.文档字符串 __ doc __
文档字符串的英意是 docstring,该属性是为函数或类列出文档的批注(类似于对象的调用)。下图是Python内部有关字符串的docstring
在这里插入图片描述
2. __ name __ 属性
常常可以在程序末端看到:
if __ name __ == ‘__ main __’:
其实这是使用 __ name __ 属性来判别程序是自己执行还是被其他程序import导入当成模块使用
在这里插入图片描述
若程序是自己执行的 __ name __ 就是 __ main __

(三)Python的特殊方法

1. __ str__() 方法
协助返回易读取的字符串,下例用一个类的调用来说明
在这里插入图片描述
在Python Shell窗口直接输入 a也将得到一个不易阅读的结果

2. __ repr __ () 方法
上例中若直接输入类变量 a系统是调用 __ repr __() 方法做响应的,为了得到正常的数据输出,需要定义此方法,由于内容相同,可直接用等号取代 __ str __()方法
在这里插入图片描述

3. __ iter __ () 方法
在python中实现了__ iter __ 方法的对象是可迭代的,实现了next()方法的对象是迭代器。
实际上要想让一个迭代器工作,至少要实现__ iter __ 方法和next方法。
很多时候使用迭代器完成的工作使用列表也可以完成,但是如果有很多值列表就会占用太多的内存,而且使用迭代器也让我们的程序更加简洁通用。
若一个类想被用于for … in循环,类似list或tuple那样,就必须实现一个__ iter __()方法,该方法返回一个迭代对象,然后,Python的for循环就会不断调用该迭代对象的next()方法拿到循环的下一个值,直到遇到StopIteration错误时退出循环。下例已输出100以内的斐波那契数为例
在这里插入图片描述

(四)Python的应用模块

  • 1.导入模块
    import 模块名称
  • 2.导入模块内特定单一函数
    from 模块名称 import 函数名称
  • 3.导入模块内多个函数
    from 模块名称 import 函数名称1,函数名称2,…,函数名称n
  • 4.导入模块所有函数
    from 模块名称 import *
  • 5.使用as给函数指定替代名称
    from 模块名称 import 函数名称 as 替代名称
  • 6.使用as给模块指定替代名称
    import 模块名称 as 替代名称

猜你喜欢

转载自blog.csdn.net/suoyue_py/article/details/100576189