10.12 classmethod,staticmethod,反射,魔法方法
classmethod
是一个装饰器,可以装饰类内部的方法,使该方法绑定给类来使用
对象的绑定方法特殊之处
由对象来调用,会将对象当作第一个参数
类的绑定方法特殊之处
由类来调用,会将类当作第一个参数
staticmethod
是一个装饰器,可以装饰给类内部的方法,使用该方法即不绑定给对象,也不绑定给类
面向对象高级方法
isinstance
python的内置函数,可以传入两个参数,用于判断参数1是否是参数2的实例
判断一个对象是否是一个类的实例
issubclass
python的内置函数,可以传入两个参数,用于判断参数1是否是参数2的子类
判断一个类是否是另一个类的子类
反射
指的是通过字符串
对对象
或类
的属性进行操作
hasattr:通过字符串
,判断该字符串
是否是对象
或类
的属性
getattr:通过字符串
,获取对象
或类
的属性
setattr:通过字符串
,设置对象
或类
的属性
delattr:通过字符串
,删除对象
或类
的属性
魔法方法(类的内置方法)
凡是在类内部定义,以__开头__结尾
的方法都称之为"魔法方法",又称之为"类的内置方法"
"魔法方法"会在某些条件成立时触发
__init__
:在调用类的时候自动触发
__str__
:会在打印对象时触发
__del__
:对象被销毁前执行,该方法会最后触发(与所在前后位置无关)
__getattr__
:会在对象.属性
时,"属性没有"的情况下触发
__setattr__
:会在对象.属性=属性值
时触发
__call__
:会在对象被调用时触发
__new__
:会在__init__
执行前触发
单例模式(面试常提)
单例模式指的是单个实例,实例指的是调用类产生的对象
实例化多个对象时,会产生多个内存地址,单例可以让所有调用者,在调用类产生对象情况下都指向同一份内存地址
单例的目的:为了减少内存的占用