飞道的博客

python入门走向进阶必知的若干概念整理(一)

235人阅读  评论(0)

python解释器

详情请见:https://www.jianshu.com/p/c70474e1db0a

用的比较多的就是cython,但由于GIL的存在,让其无法像编译型语言那样做真正意义上的多线程。

魔法方法

魔法方法指的是一些双下划线的方法,这些方法往往是解释器使用,可以对应到Python里的一些语法行为。比如“init”、“str”、“bool”、"next"等。(下划线在csdn里的md编辑器直接变成了加粗,有点尴尬-_-!)

常见魔法方法

init

初始化函数,在创建实例对象为其赋值时使用,在__new__之后,__init__必须至少有一个参数self,就是这个__new__返回的实例,__init__是在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值。

new:

很多人认为__init__是类的构造函数,其实不太确切,__init__更多的是负责初始化操作,相当于一个项目中的配置文件,__new__才是真正的构造函数,创建并返回一个实例对象,如果__new__只调用了一次,就会得到一个对象。
继承自object的新式类才有__new__这一魔法方法,__new__至少必须要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供。
__new__必须要有返回值,返回实例化出来的实例(很重要),这点在自己实现__new__时要特别注意,可以return父类__new__出来的实例,或者直接是object的__new__出来的实例,若__new__没有正确返回当前类cls的实例,那__init__是不会被调用的,即使是父类的实例也不行。
__new__是唯一在实例创建之前执行的方法,一般用在定义元类时使用。

创建对象的步骤:

  1. 首先调用__new__得到一个对象
  2. 调用__init__为对象添加属性
  3. 将对象赋值给变量

更多实例验证请参考https://www.jianshu.com/p/3f4786b33f34

class:

获得已知对象的类 ( 对象.__ class __),可以用于访问或者修改类的变量。

str

在将对象转换成字符串 str(对象) 测试的时候,打印对象的信息,__str__方法必须要return一个字符串类型的返回值,作为对实例对象的字符串描述

repr

如果说__str__体现的是一种可读性,是给用户看的,那么__repr__方法体现的则是一种准确性,是给开发人员看的,它对应的是repr()函数,重构__repr__方法后,在控制台直接敲出实例对象的名称,就可以按照__repr__中return的值显示了

其他:

如__del__,释放资源用,无需重写
如__getattribute__,可用于拦截属性并重写
如__bases__,获取父类
如__mro__,获取集成脉络和顺序
如__call__,实例对象以()的形式被调用
如__slots__,一种魔法属性
如__all__,可以用__all__=[‘函数名或方法名’]的方式限制一下哪些函数或方法可以被导入,只针对通过 from xx import *这种导入方式有效

装饰器

项目中时常要用到线程的概念,在代码中遇到了用装饰器的做法,来给用到多线程的地方添加线程,这里就补充一下装饰器的知识。

详情请见:https://www.jianshu.com/p/ee82b941772a

装饰器更多的像是打包了其他函数作为一种新的函数出现在代码中,与functool.partial的形式很像。

纯函数

详情请见:http://www.fly63.com/article/detial/1274


转载:https://blog.csdn.net/udadau/article/details/105380221
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场