03 2018 档案
摘要:面向对象 自定义异常类型 定制异常类型成功
阅读全文
摘要:断言assert 断言是断定会有什么,没有的话就会报错,可以用assert方法来实现,如下: 断言报错, if 语句的执行依赖于前面代码执行结果
阅读全文
摘要:主动触发异常-raise
阅读全文
摘要:try..except...详细用法 1、如果一段代码有多种类型的错误,例如: 定制什么类型异常,能捕获相应的异常,但是没有指定的异常的话还是会报错的, 这样的话,能不能写多个except呢,答案是可以的,这就是异常的多分支 这样就能捕获多种类型的异常, 多分支:被检测的代码块抛出的异常有多种可能性
阅读全文
摘要:一、什么是异常 异常是错误发生的信号,一旦程序出错,并且程序没有处理这个错误,那么就会抛出异常,并且程序的运行随之终止 例如: 报错后后面的代码没有被执行 二、错误分为两种 1、语法错误 例如: 2、逻辑错误 a、ValueError b、NameError c、IndexError d、KeyEr
阅读全文
摘要:十五 面向对象实战 链接:http://www.cnblogs.com/linhaifeng/articles/7341318.html 本周作业 角色:学校、学员、课程、讲师要求:1. 创建北京、上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北
阅读全文
摘要:面向对象的软件开发 面向对象的软件开发包括下面几个步骤: 1.面向对象分析(object oriented analysis ,OOA) 软件工程中的系统分析阶段,要求分析员和用户结合在一起,对用户的需求做出精确的分析和明确的表述,从大的方面解析软件系统应该做什么,而不是怎么去做。面向对象的分析要按
阅读全文
摘要:练习二:在元类中控制自定义的类无需__init__方法 利用__call__方法
阅读全文
摘要:在元类中控制把自定义类的数据属性都变成大写 找到数据属性,然后对数据属性进行操作,
阅读全文
摘要:一、单例模式 可以看出,两个对象的内存地址不一样,但是对象的属性是一样的,能不能只实例化一次,然后其它对象都引用它,就像a =1 b =1 ,,我们发现,他们指向的是同一块内存地址,答案是可以的,这就是单例模式, 以上就是实现单例模式的一种方式,class,下面介绍第二种方式,通过元类实现单例模式
阅读全文
摘要:一、知识储备 1、__call__方法 实例化时传参 元类内部也应该有一个__call__方法,会在调用Foo时触发执行 Foo(1, 2, x=1)相当于 Foo.__call__(Foo,1,2,x=1) 可以看出,Chinese类实例化会触发它的父类的__call__方法, 我们先看一下__c
阅读全文
摘要:一般定义方法: 把metaclass元类换成自己定义的类Mymeta 对Mymeta进行定义: 在Mymeta中可以设置控制条件,对生成的类进行控制,如: 对注释进行控制: 如果没有注释或者注释为空,就会报错,报错为: 加上注释就不会报错了。
阅读全文
摘要:一、储备知识exec 参数1:字符串形式的命令 参数2:全局作用域(字典形式),如果不指定默认就使用globals() 参数3:局部作用域(字典形式),如果不指定默认使用locals() 示例代码如下: l为局部变量,执行后会增加z的键值对,g为全局变量,x的值会修改为10,m不存在,会添加进g p
阅读全文
摘要:一、__str__方法 示例代码: 实例化不会触发__str__方法,但是打印的话就会触发,如下: 执行了,但是TypeError,我们return一个字符串就可以了,如: 二、__del__方法 实例代码如下: 定义一个Open类,模仿文件打开操作, 可以看出,实例化触发了 __del__方法,
阅读全文
摘要:一、isinstance(obj,cls): 检查obj是否是类 cls 的对象 代码示例: 二、issubclass(sub, super): 检查sub类是否是 super 类的派生类 代码实例: 三、item系列 1.查询 触发了第一个方法 如果 这时候可以修改下代码: 这样就不会报错了,不存
阅读全文
摘要:一、根据用户的输入,执行对象方法 例如: 有用户选择的方法的话执行,没有的话就不会执行 还可以对上述代码进行改进,如下:
阅读全文
摘要:一、引子,想根据用户的输入来判断输出的属性 代码如下: 结果报错,是因为方式错误,name为字符串,所以说报错,那有没有方法实现呢,这就用到反射方法,如下: 二、通过字符串映射到对象的属性 1、查询是否有某个属性 True说明有这个属性 2、获取某个属性 但是如果没有某个属性,就会报错 如果不让让他
阅读全文
摘要:1、绑定到对象的方法的应用 绑定给对象,就应该由对象来调用,自动将对象本身当做第一个参数传入 2、绑定给类,就应该由类来调用,自动将类本身当做第一个参数传入 3、非绑定方法 非绑定方法,不与类或者对象绑定,谁都可以调用,没有自动传值一说
阅读全文
摘要:一、在类内部定义的函数,分为两大类: 1、绑定方法,绑定给谁,就应该由谁来调用,谁来调用就会把调用者当做第一个参数自动传入 绑定到对象的方法:在类内定义的没有被任何装饰器的方法 类里面定义的函数与对类来说与普通函数来说没有什么区别,一般是绑定到对象的, 绑定到类的方法:在类内定义的被装饰器class
阅读全文
摘要:一个求BMI体质指数的例子,代码如下: 体质指数(BMI)= 体重 / 身高 **2 但是,这样不够灵活,我们对代码做下更改: 如下: 上述代码一定程度上提高了灵活性,但是用户的调用的时候是在调用一个方法区执行,能不能让用户感觉就向在调一个数据属性呢,答案是可以的,这就用到了property装饰器
阅读全文
摘要:一、封装数据属性、明确区分内外:示例代码如下: 可以防止外部直接修改隐藏属性,并且提供了一个接口,按照固定的格式向调用者输出信息 也可以提供修改隐藏属性的接口,让调用者通过接口修改隐藏的属性,并且可以写上控制逻辑 例如: 可以看出,修改成功了,并且加上了控制,不让调用者随意更改 二、隔离复杂度 例如
阅读全文
摘要:一、引子 从封装本身的意思去理解,封装就好像是拿来一个麻袋,把小猫,小狗,小王八等一起装进麻袋,然后把麻袋封上口子。 照这种逻辑看,封装=‘隐藏’,这种理解是相当片面的 二、如何实现属性的隐藏 1、在python中用双下划线开头的方式将属性隐藏起来,示例代码如下: 不仅类A无法访问,A的实例化对象也
阅读全文
摘要:Python崇尚鸭子类型,即‘如果看起来像、叫声像而且走起路来像鸭子,那么它就是鸭子’ python程序员通常根据这种行为来编写程序。例如,如果想编写现有对象的自定义版本,可以继承该对象 也可以创建一个外观和行为像,但与它无任何关系的全新对象,后者通常用于保存程序组件的松耦合度。 例如:利用标准库中
阅读全文
摘要:一、什么是多态 多态是同一类事物的多种形态 例如: 二、什么是多态性 多态性指的是可以在不考虑对象类型的情况下而直接使用对象 例如: 三、多态性的好处 1.增加了程序的灵活性 以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal) 2.增加了程序额可扩展性 通过继承a
阅读全文
摘要:一、什么是抽象类 与java一样,python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化 二、抽象类与普通类的不同 抽象类中只能有抽象方法(没有实现功能),该类不能被实例化,只能被继承,且子类必须实现抽象方法。 三、在python中利用a
阅读全文
摘要:先看一段代码: 如果要为,teacher类添加老师所教的课程信息,如课程名,课程价格,课程周期等,可以在init函数里面增加,但是如果多个老师教同一门课程,就会出现代码重复的问题,如下 代码所示: 怎样解决代码重复问题,可以新加一个course类:如下所示: 但是,course类和teacher类并
阅读全文
摘要:一、指名道姓的方式,不依赖于继承 示例代码如下: 从以上结果可以看出,即执行了自己的特有方法,又执行了父类中继承的方法 想为草丛伦增加一个weapon私有属性,代码如下: 报错提示缺少一个weapon位置参数,加上位置参数就可以实例化成功了, 但是发现了重复代码,怎样减少重复代码呢,可以使用 二、s
阅读全文
摘要:一、面向对象中的类有两种,新式类和经典类 1、在python2中,经典类是没有继承object的类,以及它的之类都称之为经典类 示例代码如下 class Foo: pass class Bar(Foo): pass 2、在python2中,新式类是继承object的类,以及它的子类都称之为新式类 示
阅读全文
摘要:派生是指子类可以有自己的特有属性,示例代码如下: 结果为: Demacia 从结果可以看出,能够访问g1的特有属性camp 派生属性并不影响正常代码执行: 在Garen类中添加一个attack函数,会发生什么变化 以上结果说明,属性的查找顺序为对象自身,所属类中依次去查找
阅读全文
摘要:属性查找小练习: 稍作修改: 可以看出,属性的查找顺序为先从对象自身查找,然后从对象所在的类进行查找,然后从父类查找,依次查找,直至找到或者报错没有找到,
阅读全文
摘要:一、什么是继承 继承指的是类与类之间的关系,是一种子类是父类的关系,例如,人,大象,猴子是动物的关系,继承的功能之一就是用来解决代码重用问题,继承是一种创建新类的方式, 在python中,新建的类一个或多个父类,父类又可以称为基类或者超类,新建的类称为派生或者子类。 二、Python中的继承分为:单
阅读全文
摘要:需求: 英雄需要有昵称、攻击力、生命值等属性; 实例化出两个英雄对象; 英雄之间可以互殴,被殴打的一方掉血,血量小于0则判定为死亡。 实例代码如下: 草丛伦打芮雯雯,草丛伦的攻击力为30 ,打了芮雯雯一下,芮雯雯掉了30的血,还剩50的生命值
阅读全文
摘要:需求:有一个计数器(属性),统计总共实例化了多少个对象 代码如下: 结果为: 0111 从以上结果可以看出,如果写成self.count ,他就会变成对象的私有属性,所以说虽然实例化了3次,但是类的count值为0,每个对象的count值为1 从以下验证代码可以看出: 所以说正确的代码实例如下:
阅读全文
摘要:小结主要讲述面向对象的优点,可扩展性高 示例代码如下: 我们往类中插入一个数据属性,只需在类中添加即可,对象不需做什么改动就可以访问,代码验证如下: 结果如下: ChinaChinaChina 证明都可以访问 插入一个函数属性,只需在类中添加即可,对象不需做什么改动就可以访问,代码验证如下: 结果如
阅读全文
摘要:补充说明: 1、站的角度不同,定义出的类是不同的 2、现实中的类并不完全等于程序中的类,比如现实中的公司类,在程序中有时需要拆分成部门类,业务类等 3、有时为了编程需求,程序中也可能会定义现实中不存在的类,比如策略类,现实中并不存在,但是在程序中确实一个很常见的类 在python中一切皆对象,在py
阅读全文
摘要:一、说明 __init__方法用来为对象定制自己独有的特征 二、示例代码如下 产生对象代码如下: 加上__init__方法后,类示例化的步骤如下: 1、先产生一个空对象,stu1 2、LuffyStudent.__init__(stu1,'王一丫','女',18) 查看stu1的名称空间: 结果如下
阅读全文
摘要:一、面向对象的理解 面向对象的核心就是对象二字,什么是对象呢,对象就是特征与技能的结合体,例如,花、草、树木是对象、电脑和人也是对象,他们都有自己的特征和技能 二、面向对象的优点: 面向对象的优点正是面向过程的缺点,面向过程可扩展性差,但是面向对象可扩展性强 三、面向对象的缺点 面向对象的缺点正是面
阅读全文
摘要:面向过程编程是Python两种编程流派的其中一种,另外一种是面向对象编程,这篇博客只讨论面向过程编程: 1、概念 面向过程的核心是过程二字,过程就是解决问题的步骤,他就像是设计工厂的一条流水线,是一种机械式的思维方式 2、优点 复杂的问题流程化,简单化 3、编程实例 用户注册: 过程分解,编程简单,
阅读全文
摘要:这篇博客本来昨天写了一部分,结果笔记本没电自动关机了,悲催,今天重头开始写 主要写听完鸡汤之后自己的一些个人感受: 说到老板喜欢什么样的员工?我之前很少考虑这个问题,自己把自己的本质工作做好不就可以了吗?事实并不是我想的那样! 1、守规矩 自我感觉做的可以 2、能力好 这个不敢说,公司大牛太多了 3
阅读全文
摘要:python装饰器学了几篇,比较难理解,特写此博客分析装饰器原理和实例: 一、装饰器概念 python装饰器就是用于拓展被装饰函数功能的一种函数(一般是高阶函数,接受被装饰器函数当做参数传入),这个函数的特殊之处在于它的返回值也是一个函数,使用python装饰器的好处就是在不用更改被装饰函数的代码前
阅读全文
摘要:(1)copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变 >>> alist=[1,2,3,["a","b"]]>>> import copy>>> c = copy.copy(alist)>>> print(alist)[1, 2, 3, ['a', 'b']]>>> print(c)
阅读全文
摘要:很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误、警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug(), info(), warning(), error() and c
阅读全文
摘要:我们经常需要通过Python去执行一条系统命令或脚本,系统的shell命令是独立于你的python进程之外的,每执行一条命令,就是发起一个新进程,通过python调用系统命令或脚本的模块在python2有os.system, 这条命令的实现原理是什么呢?(视频中讲,解释进程间通信的问题...) 除了
阅读全文
摘要:加密算法介绍 HASH Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能
阅读全文
摘要:此模块用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为 configparser。 来看一个好多软件的常见配置文件格式如下 解析配置文件 其它增删改查语法
阅读全文
摘要:xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要是xml。 1、xml的格式如下,就是通过<>节点来区别数据结构的: 2、xml协议在各个
阅读全文

浙公网安备 33010602011771号