python_学习笔记

1,多态:对不同类的对象使用同样的操作,但使用函数显示地检查类型能够毁掉多态(eg: type,isinstance,issubclass)

封装:多态让用户对于不知道是什么类的对象进行方法调用,而封装可以不用关心对象是如何构建的而直接进行使用

2,私有方式访问:在其名字前加上双下划线(注意不是单下划线)即可,‘__名字’此种类型在外部是无法被访问的,但是在类的内部还能使用访问,因为在类的内部定义中,所有的双下划线被翻译为前面加上单下划线和类名的形式,即:在内部,python使用一种 name mangling 技术,将 __membername替换成 _classname__membername,所以你在外部使用原来的私有成员的名字时,会提示找不到。

3,指定超类:Filter 类的用处在于它可以用作其他类的积累(超类),比如SPAMFilter类(其中的filter方法是从Filter类中继承的),可以将序列中的SPAM过滤出去

4,issubclass函数:用于检查一个类是否为另一个类的子类;isinstance运用于检查一个对象是否为一个类的实例;使用__class__特性可以知道一个对象属于哪个类,eg: s.__class__

5,多重继承:注意一个方法从多个超类继承,注意超类的顺序

6,对象:对象包括方法和特性,特性只是其一部分的变量,方法是存储在对象内的函数,方法和其他函数的区别在于方法总是将对象作为自己的第一个参数,这个参数一般称为self。

7,类:定义其实例会用到的方法

8,构造方法:当一个类的构造方法被重写时,对象的初始化有时会出现错误。此时,可以调用超类构造方法的未绑定版本或者使用super函数解决,使用super函数时,当前的类和对象作为super函数的参数使用,调用函数返回的对象的任何方法都是超类的方法,而不是当前类的方法。

9,绑定和不绑定方法:在调用一个实例的方法时,该方法的self参数会被自动的绑定到实例,但如果直接调用类的方法(eg:Bird__init__(self)),此时没有实例会被绑定

10,属性:property函数(eg:size = property(GetSize, SetSize))可用0、1、2、3或者4个参数来调用,没参数则产生的属性既不可读又不可用,4个参数分别被叫做fget/fset/fdel/doc,其实property并不是一个真正的函数,而是其实例有很多方法的类(也可以使用@property)

11,静态方法和类成员方法:使用@staticmethod和@classmethod

12,迭代器:即具有next方法的对象,且next方法在调用时不需要任何的参数,调用时会返回其下一个值,当调用next后单迭代器没有值返回时会已发一个StopInteration异常。一个对象若实现__iter__方法是可迭代的,一个对象实现了next方法则是迭代器。除了在迭代器和可迭代对象上进行迭代外,还能把它们转换为序列,大部分能使用序列的地方可以使用迭代器(eg:使用list构造方法显式地将迭代器转化为列表)。

13,生成器:一种用普通的函数语法定义的迭代器,任何包含yield语句的函数称为生成器,其行为和普通的函数有很大的差别,每次产生多个值而不是像return那样返回值。每次产生一个值(使用yield语句),函数就会被冻结(等待激活)

14,堆:heappush(heap,x):将x入堆,heappop(heap):将堆中的最小元素弹出,一般来说都是在索引是0 处的元素(因为heappop会做一些移位操作)   堆属性:位于第i位的元素总是比第2i以及第2i+1处元素小,基于堆属性,可以使用heapify函数heapify(heap)可以讲任意列表通过尽可能少的移位操作转换为合法的堆

每天多一点提高,给自己一些激励,开心生活,用编码来丰富我的生活,加油! ↖(^ω^)↗
原文地址:https://www.cnblogs.com/graceting/p/3620163.html