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)可以讲任意列表通过尽可能少的移位操作转换为合法的堆
最新文章
- POJ2175 Evacuation Plan
- js ie8不支持项总结
- libctemplate——C语言模块引擎简介及使用
- Django Web在Apache上的部署
- Hacker(16)----防范端口扫描与嗅探
- .Net Core 2.0 EntityFrameworkCore CodeFirst入门教程
- Mybatis JPA 插件简介(v2.1.0)
- BZOJ_1266_[AHOI2006]上学路线route_最小割
- Codeforces Round #534 (Div. 1)
- SqlServer中创建非聚集索引和非聚集索引
- 监听auduo标签播放
- Java 的 clone 方法 &;&; 浅复制和深复制
- Byte数组和字符串相互转换的问题
- 【HDFS API编程】查看目标文件夹下的所有文件、递归查看目标文件夹下的所有文件
- c c++ 函数不要返回局部变量的指针
- 如何监控 Java 垃圾回收机制: jps、jstack、jmap、jhat、jstat
- Git 中 pull 和 clone 的区别
- TensorFlow 辨异 —— tf.add(a, b) 与 a+b(tf.assign 与 =)、tf.nn.bias_add 与 tf.add(转)
- Redis 如何正确实现分布式锁
- 初次使用SQL调优建议工具--SQL Tuning Advisor
热门文章
- python(8)- python基础数据类型
- Python 模块之 ConfigParser: 用 Python 解析配置文件
- HDU 2102 A计划 (BFS)
- FastDFS的配置、部署与API使用解读(8)FastDFS多种文件上传接口详解(转)
- linux下apache https 虚拟主机配置
- EasyRTMP实现将RTSP流转换成RTMP流实现RTSP直播转RTMP直播的功能
- struts2的输入检验
- java基础知识查漏 二
- Process 'command 'D:\AndroidSDK\ndk-bundle\ndk-build.cmd'' finished with non-zero exit value 2
- PAT 天梯赛 L2-013. 红色警报 【BFS】