类的定义

类对象:和类名相同的对象或者cls,例如: MyClass
实例对象:通过类创建的对象或者self,例如: mc = MyClass(100)
类对象属性:通过类对象绑定的属性,类名(或者cls).属性名=属性值
实例对象属性:通过实例对象绑定的属性,实例对象名(或者self).属性名=属性值
类方法:@classmethod修饰的方法,第一个参数表示类对象,通常为cls
实例方法:类中不加修饰符的方法,第一个参数表示实例对象,通常为self
         或者通过实例对象绑定的方法,实例对象名(或者self).方法名=函数名


类对象和实例对象关系

类对象和实例对象的属性和方法是分离存储的。
实例对象优先查找自身的属性或方法,当找不到时,到类对象中查找。


继承与MRO

继承:子类复用父类的属性或者方法叫做继承。
重写:子类重新实现了父类的方法或者重新绑定了父类的属性。
MRO:方法解析顺序(Method Resolution Order),当多重继承形成继承树时,通过
   最底层类的实例对象访问属性或方法时,Python解析器在类继承树上的搜索顺序。
多态:使用不同的实例对象,调用相同的方法,输出不同的结果。
权限: '_'开头的属性或方法表示受保护的,可以在类外部及子类中访问。
    '__'开头的属性或方法表示私有的,类外部及子类都不能访问
      Python编译器对'__'开头的属性或方法进行改名处理,可通过dir查看)。


反射

反射: 通过字符串操作属性(增删改查)的一种方法。
用于反射的内置函数:
1, hasattr(o, name)
  判断实例对象o是否存在名叫name的属性或者方法。
2, getattr(o, name, default=None) ==> 等价于 o.name
  获取实例对象0名为name的属性或方法,如果没有则返回default默认值(如果default为空,抛异常)。
3, setattr(o, name, value) ==> 等价于 o.name = value
  用于绑定实例对象o名为name的属性或者方法,属性值或者方法名叫value。
4, deattr(o, name) ==> 等价于 del o.name
  删除实例对象o名为name的属性或者方法。


__new__

实例对象创建顺序:
  (1)调用__new__创建实例对象。
  (2)实例对象效用__init__进行数据的初始化。
  注:自定义类中未实现该方法时,会自动调用object超类中的该函数。
自定义__new__要点:
  (1)__new__方法必须返回一个实例对象。
  (2)在自定义的__new__必须调用超类object.__new__才能创建对象。


其他常用内置函数

 

创作不易,转载请标明出处,谢谢。

posted on 2020-08-09 18:45  lwp-boy  阅读(155)  评论(0编辑  收藏  举报