【JulyEdu-Python基础】第 6 课:高级面向对象
使用@property添加属性和自定义属性
__slots__和property
方法和属性的动态绑定
使用__slots__限定class实例能添加的属性
__slots__仅对当前类实例起作用,对继承的子类是不起作用的。
直接暴露属性的局限性
使用get/set方法
利用@property简化get/set方法
利用@property实现只读属性
装饰器与property实现(学有余力的同学可以研究一下)
特殊方法与类的定制
类的默认行为与定制
常见特殊方法
枚举类
枚举 vs 变量
@unique帮助去重
元类
运行时动态创建 vs 编译时定义
使用type创建新类型
metaclass(元类)
metaclass -> class -> instance
继承和动态绑定可以解决问题吗?
__new__函数
ORM框架实例分析
异常与错误处理
为什么使用异常?
异常的抛出与捕捉
traceback使用
logging使用与配置(自己baidu)
单元测试
为什么需要单元测试
unittest使用
mock介绍与使用
作业
利用@property给一个Screen对象加上width和height属性,以及一个只读属性resolution。
自己实现一遍ORM例子代码
实现一个类,支持用以下方式输出小于1000的所有素数
for i in Prime1000(): print(i)
自己去查资料,通过实现__getitem__支持切片操作
【JulyEdu-Python基础】第 6 课:高级面向对象的更多相关文章
- Python基础入门(6)- 面向对象编程
1.初识面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本篇随笔将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象 ...
- 【Python基础】random 的高级玩法
random 模块的高级玩法 1.python 随机产生姓名 方式一: import random xing = [ '赵', '钱', '孙', '李', '周', '吴', '郑', '王', ' ...
- Day11 Python基础之装饰器(高级函数)(九)
在python中,装饰器.生成器和迭代器是特别重要的高级函数 https://www.cnblogs.com/yuanchenqi/articles/5830025.html 装饰器 1.如果说装 ...
- Py修行路 python基础 (十五)面向对象编程 继承 组合 接口和抽象类
一.前提回忆: 1.类是用来描述某一类的事物,类的对象就是这一类事物中的一个个体.是事物就要有属性,属性分为 1:数据属性:就是变量 2:函数属性:就是函数,在面向对象里通常称为方法 注意:类和对象均 ...
- Py修行路 python基础 (十六)面向对象编程的 继承 多态与多态性 封装
一.继承顺序: 多继承情况下,有两种方式:深度优先和广度优先 1.py3/py2 新式类的继承:在查找属性时遵循:广度优先 继承顺序是多条分支,按照从左往右的顺序,进行一步一步查找,一个分支走完会走另 ...
- Python基础(18)_面向对象程序设计2(反射、__str__、__del__、__item__系列)
一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object) ...
- Python基础(17)_面向对象程序设计(抽象类、继承原理、封装、多态,绑定方法)
一.抽象类 抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化 1.在python中实现抽象类 import abc #利用abc模块实现抽象类 class All_file(metacl ...
- Python基础(16)_面向对象程序设计(类、继承、派生、组合、接口)
一.面向过程程序设计与面向对象程序设计 面向过程的程序设计:核心是过程,过程就解决问题的步骤,基于该思想设计程序就像是在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题的简单化,流程化 缺点: ...
- python基础(23):面向过程与面向对象的优劣、初识面向对象
1. 面向过程与面向对象的优劣 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程 ...
- Py修行路 python基础 (十九)面向对象进阶(下)
item系列 __slots__方法 __next__ 和 __iter__实现迭代器 析构函数 上下文管理协议 元类一.item系列 把对象操作属性模拟成字典的格式. 例如:对象名['key'] ...
随机推荐
- 02-SQLServer数据库附加后处于只读模式
一.总结 附加数据库后,遇到只读,并且取消只读的时候报错操作系统错误,一般都是附加的时候,使用的是SQLServer用户登录附加的,只要使用windows用户登录数据库重新附加一下就ok了. 二.处理 ...
- SSM框架中使用日志框架
在 pom,xml 配置 Log4j jar 添加一个 mybatis_log.xml 文件 完整配置信息 <?xml version="1.0" encoding=&quo ...
- 用脚本来运行scrapy crawl ...
启动爬虫的命令为: scrapy crawl spidername(爬虫名) 方案(一)name.py #!/usr/bin/env python # -*- coding:utf-8 -*- fro ...
- ansible变量定义
一./etc/ansible/hosts [webServers] 192.168.2.200 http_port=8009 [web]web1web2 [db]db1db2 [app:childre ...
- Python之subprocess模块的使用
1.subprocess调用系统的命令 #!/usr/bin/env python # -*- coding: utf-8 -*- import subprocess import sys compl ...
- luoguP1996 约瑟夫问题
P1996 约瑟夫问题 2.5K通过 4.7K提交 题目提供者 Timothy 标签 洛谷原创 云端 难度 普及- 时空限制 1s / 128MB 题目背景 约瑟夫是一个无聊的人!!! 题目描述 n个 ...
- SpringMVC——MVC执行流程底层剖析
SpringMVC流程图如上面所示,根据上图,串联一下底层源码: 1.在DispatcherServlet中找到doDisPatch 2.观察方法体,然后找到getHandler方法 3.点进方法,发 ...
- BZOJ 2734 [HNOI2012]集合选数 (状压DP、时间复杂度分析)
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2734 题解 嗯早就想写的题,昨天因为某些不可告人的原因(大雾)把这题写了,今天再来写题解 ...
- SimpleThreadPool给线程池增加拒绝策略和停止方法
给线程池增加拒绝策略和停止方法 package com.dwz.concurrency.chapter13; import java.util.ArrayList; import java.util. ...
- Gitlab启动、停止、重启(两种启动方式)
因为Gitlab不是我部署的,是之前总监部署的,服务器突然更新系统了,Git服务器就没有自启··自启··自启······,自己操作启动没有成功,然后网上搜了一下都是这三种启动关闭重启的方式,可是我这里 ...