python学习手册笔记——30.类的设计

00.Python的OOP实现可以概括未三个概念:
*继承:继承是给予Python中的属性查找
*多态:在X.method方法中,method的意义取决于X的类型
*封装:方法和运算符实现行为,数据隐藏默认是一种管理

01.从设计的角度来看,继承是一种定义集合成员关系的方式:类定义了一组内容属性,可由具体的集合(子类)继承和定制。

02.聚合(aggregation):使用聚合描述容器和所涵物之间较弱的议来关系来区分这个术语。“组合”就是内嵌对象集合体。组合类一般都提供自己的接口,并通过内嵌的对象来实现接口。

03.面向对象程序猿时常会谈到所谓的委托(delegation),通常就是指可能感知器对象内嵌其他对象,而把运算请求传给那些对象。控制器负责管理工作。Python中,委托通常是以__getattr__钩子方法实现的,因为这个方法会拦截对不存在属性的读取,包装类(有时称为代理类)可以使用__getattr__把任意读取转发给被包装的对象。

04.让类内某些变量局部化。压缩后的变量名有时会被误认认为“私有属性”,单这其实只是一种把类所创建的变量名局部化的方式而已:名臣压缩并无组织类外代码对他的读取。

05.在变量前面加__X保证了变量私有

06.


07.方法也是一种独享,并且可以用与其他对象大部分相同的方式广泛地使用——可以对他们赋值、将器传递给函数、存储在数据结构中。

08.


08.无绑定类方法对象:无self
绑定实例方法对象:self+函数对

09.把类传给会产生任意种类对象的函数。这类函数在OOP设计领域中偶尔称为工厂。

10.如果难以记住这种搜索顺序的偏好,或者如果你对搜索流程有更多的控制,都可以在树中任何地方强迫属性的选择:通过赋值或者在类混合处支持你想要的变量名。

11.__slots__类属性:将字符串属性名称顺序赋值给特殊的,新式类就有可能既限制类的实例将有的合法属性集,又能够优化内存和速度性能。通过在__slots__钟包含__dict__仍然可以容纳额外的属性,从而考虑到一个属性空间字典的需求。

12.特性是定义特定类型描述符的一种简化方式,该描述符运行关于访问的函数。

13.静态方法大致与一个类钟的简单的五十里函数类似地工作,类方法传递一个类而不是一个实例。

14.类方法总是接收一个实例树钟的最低类:
*静态方法和显式类名称可能对与处理一个类本地的数据来说是更好的解决方案
*类方法可能更适合处理对层级钟的米格类不同的数据

15.函数装饰器(function decorator)提供了一种方式,替函数明确了特定的运算模块随,也就是将函数包裹了另一层,在另一个函数的逻辑内实现。

16.staticmethod装饰器,因为装饰器会传回任何种类的对象,这也可以让装饰器在每次调用上增加一层逻辑。

17.除非真的有必要,否则不要把事情弄得很复杂。把程序代码包裹很多层直到人们难以理解位置,这绝对是个坏主意。

posted @ 2019-07-24 15:57  艾小小雨  阅读(282)  评论(0编辑  收藏  举报