04 2017 档案
摘要:Python面向对象进阶2.html title: Python 面向对象进阶2tags: Python 1 setitem getitem delitem <!--span class="number"> 0 </span--> 2 _slots_ <!--span class="number">
阅读全文
摘要:1 logging 模块 logging有两种的配置的方式,configure、logger 1.1 config方式 通过logging.basicConig可以配置输出的格式,level=DEBUG,还可以是INFO、WARNING、ERROR、DIGITAL,这个的优先级是从上往下的。设置好了
阅读全文
摘要:目录 1 时间模块time <!--span class="number"> 0 </span--> 1.1 时间戳 <!--span class="number"> 1 </span--> 1.2 结构化时间 <!--span class="number"> 2 </span--> 1.3 格式化
阅读全文
摘要:1 isinstance 和issubclass instance:判断该对象是否是类的对象 isinstance(obj,Foo) 结果:True issubclass:判断是否是继承 结果:True 通过下面的方式也可以查看print(Bar.__bases__) 2 反射 反射是Smi首次提出
阅读全文
摘要:通常情况下,类中函数中定义的所有函数,, 都是对象的绑定方法 ,除此之外,还有专门的静态方法和类方法,这两个是专门给 类 使用的,但是对象非要调用也是不会报错的。 对象在调用的时候会把自己传递给self,也就是绑定方法的第一个参数。 1 静态方法 <! more 这里定义spam的时候没有self,
阅读全文
摘要:property属性 property实际是setter getter deleter是集合体,并不是一个单独的方法 <! more 结果: 5 78.53981633974483 31.41592653589793 注意: c.area是不能赋值的,虽然我们能够当做看似通过属性进行调用,实际是不是
阅读全文
摘要:数据的封装 保护隐私 方法的封装 隔离复杂度 封装其实分为两个层面,但无论哪种层面的封装,都要对外界提供好访问你内部隐藏内容的接口(接口可以理解为入口,有了这个入口,使用者无需且不能够直接访问到内部隐藏的细节,只能走接口,并且我们可以在接口的实现上附加更多的处理逻辑,从而严格控制使用者的访问) 第一
阅读全文
摘要:继承顺序 <! more Python3 : 新式类的查找顺序:广度优先 新式类的继承: class A(object): Python2 3 都是了 MRO算法 生成一个列表保存继承顺序表 不找到底部 Python2 中有新式类 和 经典类 Python2 默认的是经典类 经典类的继承是 深度优先
阅读全文
摘要:多态:是指一类事物有多种形态(!!!!定义角度!!!!) 多态性:在继承的基础上, (!!!!使用角度!!!!!) 使用多态性,实现了利用函数统一调用一个接口 多态 <! more 多态性
阅读全文
摘要:继承是一种 是 的关系,和组合对比,组合是一种 有 的关系,这两者都是解决 代用重用 问题的 继承 <! more 注意: 继承不是遗传,在显示角度中,是通过对象 抽象 成类,再把这些类抽象成一个,就是父类。是自下而上的过程,在程序中是首先由父类,然后由类,之后才有对象,是自上而下的过程。 结果:
阅读全文
摘要:类的使用:实例化、属性引用 实例化 g1 = Garen('草丛伦1') 实例化 g2 = Garen('草丛伦2') g3 = Garen('草丛伦3') 类的属性:变量和函数 print(Garen.camp) print(Garen.attack) print(Garen.__dict__)
阅读全文
摘要:Python列表解析 <! more Python生成器表达式 用列表解析,生成的是列表,但是如果用列表会把整个列表全部读取到内存中,如果列表过大,内存会爆。 生成器表达式是把 [] 换成 () ,这就是生成器的形式,每次只读入内存一个值。 结果: generator object at 0x000
阅读全文
摘要:Python 的面向对象和其他语言不一样,python的class术语与c++有一定区别,与 Modula 3更像。 1 设计面向对象 <! more 设计分成下面的两个方面,一定要先设计,找好对象,找类 1 面向对象程序设计 OOD 找对象 找类(归纳对象共同的特征和技能,每个对象独有的特征) 2
阅读全文
摘要:应用场景:需求经常变化的软件,一般需求的变化都集中在用户层,互联网应用,企业内部软件,游戏等都是面向对象的程序设计大显身手的好地方 面向对象中都是类,通过程序中的类来实现对象 Python3已经把类型和类整合起来了 ,int 等都是类。 现实生活中,是现有对象后有类。在程序中是先有类后有对象。 <!
阅读全文
摘要:在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 <! more 结果: 18 递归的原理 结果: [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35] [18, 20, 21, 2
阅读全文
摘要:python的内置函数: abs all all内部只有一个元素,内部是一个可迭代的对象 元组 列表形式的 生成器方式: any any是有任何一个的bool值是True,返回值是True,空返回的是false bin bool 空的情况:0、空字符串、空字典、空列表、None、 返回值都是fals
阅读全文
摘要:1 协程函数 1.1 协程函数理解 <! more 协程函数就是使用了 yield表达式形式的生成器 结果: generator object eater at 0x00000000028DC048 这里就证明了g现在就是生成器函数 1. 2 协程函数赋值过程 用的是yield的表达式形式 要先运行
阅读全文
摘要:1 生成器 1.1 生成器定义 生成器就是一个函数,有yield关键字,主要是针对函数的 结果: generator object test at 0x00000000027FC780 True 返回结果是证明 生成器就是迭代器 证明了是迭代器,迭代器可以用next()执行,这里就是next(g)
阅读全文
摘要:什么是迭代 1 迭代器 通常我们认为的迭代是能够循环的,如字符串,列表,元组等,这些数据类型都是根据自身的索引值进行循环的。 实际上,我们也是需要对字典、集合、文件等内容进行循环读取其内容的,这些数据类型本身是无序的,也就是没有索引值,索引我们要对这些内容进行读取的时候就用到了迭代器。 <! mor
阅读全文
摘要:关于开放封闭原则,其核心的思想是: 软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。 因此,开放封闭原则主要体现在两个方面: 对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。 对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要
阅读全文
摘要:在构建一个程序项目之前,首先需要设计程序的框架,从总体上构建一个项目中的一个个功能,之后对每一个功能进行补充,最终实现总体的功能。 <! more 1 程序的总体框架: 首先把所有的功能设计成相应的函数,用pass来实现。 1.1 查询函数实现 查找是首先匹配到相应的行,判断开始和结束的位置,这里是
阅读全文