Python_提高

2018-01-04  本文已影响0人  等哈光圈

GIL全局解释器锁

浅拷贝、深拷贝

1.浅拷贝

2.深拷贝

3.拷贝的其他方式

4.注意点

私有化

import导入模块

improt sys
print(sys.path)
- 从上面列出的目录里依次查找导入的模块文件

-  "表示当前路径

-  列表中的路径的先后顺序代表了python解释器在搜索模块时的先后顺序

from imp import reload
reload(模块名)

封装、继承、多态

多继承以及MRO顺序

1.单独调用父类的方法

2.多继承中super调用有所父类的被重写的方法
* 如果使用super().xxxx()那么会拿着当前类的名字到类名.mro获取到的元组中去找,只要找到,那么就调用它的下一个方法
* 如果使用super(类名,self).xxxx()那么会拿着类的名字到类名.mro获取到的元组中去找,只要找到,那么就调用它的下一个方法

3.单继承中super

总结

1.super().init相对于类名.init,在单继承上用法基本无差

2.但在多继承上有区别, super方法能保证每个父类的方法只会执行一次,而使用类名的方法会导致方法被执行多次,具体看前面的输出结果

3.多继承时,使用super方法,对父类的传参数,应该是由于python中super的算法导致的原因,必须把参数全部传递,否则会报错

4.单继承时,使用suoer方法, 则不能全部传递,只能传父类方法所需的参数,否则会报错

5.多继承时,相对与使用类名.init方法,要把每个父类全部写一遍,而使用super方法,只需写一句话便执行全部父类的方法, 这也是为何多继承需要全部传参的一个原因

静态方法和类方法

1.类属性、实例属性

2.实例方法,静态方法和类 方法;三种方法在内存中都归属于类,区别在于调用方式不同

property属性


方法:foo_obj.func()
property属性:foo_obj.prop

property属性的两种方式
装饰器方式
property方法的四个参数
总结

proeprty属性应用

魔法属性

1.doc:表示类的描述信息

2.moduleclass

3.init:初始化方法,通过类创建对象时,自动触发执行

4.del:当对象在内存中被释放,自动触发执行(对象计数为0或程序执行结束时触发)

5.call:对象后面加括号,触发执行

6.dict:类会对象中的所有属性

7.str:如果一个类中定义了str,那么在打印对象时,默认输出该方法的返回值(只要是获取这个对象的描述的情况,都会调用)

8.getitemsetitemdelitem

9.getslicesetslicedelslice

面向对象设计

with与"上下文管理器"

上一篇下一篇

猜你喜欢

热点阅读