【JulyEdu-Python基础】第 6 课:高级面向对象

时间:2021-09-08 18:42:09

使用@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__支持切片操作