Python----类

1 类其实就是由函数和其他变量名所构成的包,很像模块

2 定义一个类的超类是通过在class语句的圆括号中将其列出,类在圆括号中由左至右列出的顺序,会决定其在类树中由左至右的搜索的顺序

3 类通过继承进行定制

  1. 超类列在类开头的括号中
  2. 类从其超类中继承属性
  3. 实例会继承所有可读取类的属性
  4. 每个object.attribute都会开启新的独立搜索
  5. 逻辑的修改是通过创建子类,而不是修改超类

4 类是模块内的属性

5 OOP的概念

  1. 实例创建 – 填充实例属性
  2. 行为方法 – 在类方法中封装逻辑
  3. 运算符重载
  4. 定制行为 – 重新定义子类中的方法以使其特殊化
  5. 定制构造函数 – 为超类步骤添加初始化逻辑

6 Pickle:任意Python对象和字节串之间的序列化

7 Shelve 按照键值的方式把Python对象存储到一个文件中

8 调用超类构造函数

Python会找出并且只调用一个__init__,如果要保证子类的构造函数也会执行超类构造时的逻辑,一般都必须通过声明超类的__init__方法.
class Super:
	def __init__(self,x):
		....code....
class Sub(Super):
	def __init__(self,x,y):
		Super.__init__(self,x) 
		 .....code.....

9 要增强继承的方法而不是完全替代,就是在子类的新版方法中,手动回调超类版本的这个方法,也就是,把self实例手动实例传给超类的版本:SuperClass.method(self…)

10 运算重载符

	当类中提供了某个特殊名称的方法,在该类的实例出现在它们相关的表达式时,Python自动调用它们.

11 常见的运算符重载方法

方法 重载 调用
__init__ 构造函数 对象建立 : X=Class(args)
__del__ 析构函数 X对象回收
__add__ 运算符+ 如果没有_iadd_,x+y,x+=y
__or__ 运算符 (位OR)
__repr__,__str__ 打印,转换 print(X),repr(X),str(X)
__call__ 函数调用 X(*args,**kargs)
__getattr__ 点号运算 X.undefined
__setattr__ 属性赋值语句 X.any = value
__delattr__ 属性删除 del X.any
__getattribute__ 属性获取 X.any
__getitem__ 索引运算 X[i:j]
__setitem__ 索引赋值语句 X[key]=value
__delitem__ 索引和分片删除 del X[i:j]
__len__ 长度 len(x)
__bool__ 布尔测试 bool(x)
__lt__,__gt__ 特定的比较 xy
__le__,__ge__
__eq__,__ne__
__radd__ 右侧加法 Other+X
__iadd__ 实地(增强的)加法 X+=Y(or else __add__)
__iter__, __next__ 迭代环境 I=iter(X),next(I)
__contains__ 成员关系测试 item in X
__index__ 整数值 hen(X),bin(X)
__enter__,__exit__ 环境管理器 with obj as var:
__get__,__set__ 描述符属性 X.attr,X.attr=value,del X.attr
__delete__
__new__ 创建 在__init__之前创建对象

12 委托:"包装"对象

通常就是指控制器对象内嵌其他对象,而把运算请求传给那些对象

13 方法是对象:绑定或无绑定

1 无绑定类方法对象:无self
	通过类进行点运算从而获取类的函数属性,会传回无绑定方法对象.调用该方法时,必须明确提供实例对象作为第一个参数.
2.绑定实例方法对象:self+函数对
	通过对实例惊醒全运算从而获取类的函数属性,会传回绑定对象
例如:
	class Spam:def doit(self,message):print(message)
	绑定实例方法对象:obj =Spam()  x=obj.doit  x('hello world')
	无绑定类方法对象:obj =Spam()  t=Spam.doit  t(obj,'hhhh')

14 伪私有属性

	就是名称以两个下划线开始:__X,用来把名称本地化到包含类中.这包括像定义在类中的方法这样的类属性,以及在类中赋值的self实例属性.这样的名称扩展来包括类名称,类名称使得它们独特

15 装饰器

16 元类

17 修改类属性的副作用

	由于类属性由所有实例共享,一处的修改,会影响到所有的实例.

18 多重继承:顺序很重要—>Python总是根据超类在首行的顺序,由左至右搜索超类

你可能感兴趣的:(Python,python)