notes for lxf(五)
类和实例的绑定方法和属性
实例绑定 obj.func = func obj.func(obj, &argv) obj.func = MethodType(func, obj) 第一个参数是方法的引用 第二个参数是自身的引用 这种属于动态绑定 只能当前实例使用
类绑定 classname.func = func classname.func = MethodType(func, classname) 实例后的对象都能使用 这种方法是在类的内存中创建一个link指向外部的方法
__slots__ 限制类的实例属性 只对当前类起作用 对继承的子类不起作用 如果子类也有__slots__ 那么子类实例允许定义的属性就是自身__slots__加上父类的__slots__
__slots__ = tuple 定义允许绑定的属性名称 注意如果没定私有属性 那么实例也不能使用私有属性 即__slots__ = ('__name') 这样才能使用self.__name = name
@property装饰器把一个方法变成属性 属性名和函数名要一样 如果属性有多个值 则都需要初始化
多继承 MixIn的目的就是给一个类增加多个功能 多继承顺序可查看mro() C3算法拓扑排序
定制类 __str__(print调用的这个) __iter__(变成可用迭代的) __getitem__(变成可以用切片的) __call__ (把类实例变成可调用的) 特殊方法 不需要直接调用 python的某些函数或操作符会自动的调用对应的特殊方法
为什么有的对象可以用于for循环 有的可以用于切片 是因为对象本身里带有特殊函数 做特定操作会自动调用 dir()查看有哪些特殊函数
枚举类 enum @unique装饰器避免重复value __member__返回name和value 可以把一组相关常量定义在一个class中 class不可变
实例的类型是class class的类型是type type('Class name', (object,) di c(classmethod=fnc))
元类metaclass可以创建类 修改类
所有错误类型都继承自BaseException try运行可能出错的代码 如果运行出错则后续代码不会继续执行 而是直接跳转至except语句块 执行完except后 如果有finally语句块则执行 如果没发生错误 就不执行except 但finally一定会执行
调用栈traceback
记录错误logging 级别debug info warning error 只打印logging.basicConfig(level=logging.INFO)
抛出异常raise 可以自定义异常类继承系统的异常类
调试 print()打印可能有问题的变量 assert断言 后接的表达式结果若为假则会抛出AssertionError 可以用-0关闭assert 调试器pdb单步调试
单元测试“测试驱动开发” TDD:test-driven development
文档测试
notes for lxf(五)的更多相关文章
- notes for lxf(四)
类名首字母通常大写 创建实例 类名 +() __init__方法 创建实例时把一些属性绑上去 __init__方法第一参数永远是self 表示船舰的实例本身 类是实例的模板 实例是一个一个具体的对象 ...
- notes for lxf(三)
纯函数式编程是没有变量的,只要输入确定输出就确定 指高度抽象的编程范式 特点 函数本身可以作为参数传入 或者允许返回一个函数 Higher-order function 一个函数可以接收另一个函数作为 ...
- notes for lxf(二)
函数 abs()绝对值 max()返回最大值 raise 后接异常类 引发异常 函数返回多个值其实就是返回一个tuple 函数默认返回None 如果有必要检查参数类型用isinstance() typ ...
- notes for lxf(一)
python代码不能用word和windows自带的记事本保存 word保存的不是纯文本文件 记事本会在文件开始的地方加上特殊字符(UTF-8 BOM) 交互模式启动了解释器 直接运行.py文件是一次 ...
- django notes 五:Writing models
models 其实也没什么好说的,就是普通的 python 类 settings 中配置数据库连接 DATABASES = { 'default': { 'ENGINE': 'django.db.ba ...
- Android Weekly Notes Issue #229
Android Weekly Issue #229 October 30th, 2016 Android Weekly Issue #229 Android Weekly笔记, 本期内容包括: 性能库 ...
- Android Weekly Notes Issue #221
Android Weekly Issue #221 September 4th, 2016 Android Weekly Issue #221 ARTICLES & TUTORIALS And ...
- 提高CSS文件可维护性的五种方法
当完成一项前端的工作之后,许多人都会忘记该项目的结构与细节.然而代码并不是马上就能完全定型,在余下的时间里还有不断的维护工作,而这些工作也许不会是你自己完成.所以,结构优良的代码能很大程度上优化它的可 ...
- Machine Learning Algorithms Study Notes(1)--Introduction
Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 目 录 1 Introduction 1 1.1 ...
随机推荐
- 使用Vim-plug作为Vim 插件管理器
ref: https://www.cnblogs.com/jiftle/p/6918157.html - vundle是一款老款的插件管理工具- vim-plug相对较新,特点是支持异步加载,相比vu ...
- RSA加密传输代码示例
RSA加密传输代码示例 涉及敏感数据的传输,双方最好约定使用加密解密.那RSA非对称加密就大有作为了.服务端可以保留自己的私钥,发给客户端对应的公钥.这样就可以互相加解密了.php中rsa加解密实现: ...
- gantt project 使用
市场上有不少项目计划类系统, 很多都是收费的, 还有很多都是web版, 这些都自然被排除了. 免费好用的还真不多, 今天简单介绍一下 gantt project 这个软件, 开源并且免费, 基于 ja ...
- OSPFv3实验配置(GNS3)
实验目的 1. 掌握 OSPFv3(v2) 的配置方法 2. 掌握在帧中继环境下 OSPFv3 (v2)的配置方法 3. 掌握 OSPFv3(v2) NSSA 的配置方法 4. 掌握外部路由汇总的配置 ...
- antd table 点击行触发radio 或 checkbox
UIStore.ts (使用mobx) 1 import { observable, action, computed } from 'mobx' export class UIStore { @o ...
- 开启IIS的WebGarden、WebFarm和StateServer之旅
前言 公司系统虽然配置有1台NLB后拖4台App Server最后搭一台强劲无比的DB Server,但每天下午4点左右总被投诉系统慢,报表下载不了等问题.究其原因,原来NLB采用锁定sessionI ...
- 在linux安装mysql重启提示You must SET PASSWORD before executing this statement的解决方法
利用安全模式成功登陆,然后修改密码,等于给MySql设置了密码.登陆进去后,想查询所有存在的数据库测试下.得到的结果确实: ERROR 1820 (HY000): You must SET PASSW ...
- 【软工作业&思考】关于软工的一些概念性理解暨第一次阅读作业
概述 项目 内容 本次作业所属课程 2019BUAA软件工程 周二班 本次作业要求 第1次个人作业当然,比这个更重要百倍的还是实实在在的思考,这也是标题如此命名的原因 我在本课程的目标 在原有实践经验 ...
- vue适配移动端px自动转化为rem
1.下载lib-flexible 我使用的是vue-cli+webpack,所以是通过npm来安装的 npm i lib-flexible --save 2.引入lib-flexible 在main. ...
- [Kubernetes]说说 Service 与 Ingress
在 Kubernetes 中, Service 有三种对外暴露的方法,但是由于每个 Service 都要有一个负载均衡的服务,所以采用 Service 的话,会造成既浪费成本又高的现象.对于用户来说, ...