目录
classmethod:
就是一个装饰器,可以装饰给类内部的方法,使该方法绑定给类来使用
对象的绑定方法特殊之处有:由对象调用,会将对象当作第一个参数传给该方法.
类的绑定方法特殊之处是:由类来调用会将类当作第一个参数传给该方法
staticmethod:
staticmethod是一个装饰器,可以装饰给类内部的方法,使该方法不绑定给对象,也不绑定给类.
面向对象高级
isinstance
__class__
:对象的属性,获取该对象当前的类
isinstance(参数一,参数二)
python内置的函数,可以传入两个参数,用于判断参数一是否是参数二的一个实例
issubclass
issubclass(参数一,参数二)
python内置函数,可以传输两个参数,用户判断参数一是否是参数二的子类
判断一个类是否是另一个类的子类
反射
指的是通过字符串对对象或者类的属性进行操作
-hasattr
:通过字符串,判断该字符串是否是对象过类的属性
-getattr
:通过字符串,获取对象或类的属性
-setattr
:通过字符串,设定对象或类的属性
-delattr
:通过字符串,删除对象或类的属性
魔法方法
凡是在内部定义,__%%%__
格式的都是魔法方法,又叫类的内置方法
魔法方法会在某些条件成立时触发
__init__
:在调用类时触发
__str__
:会再打印对象时触发
__del__
:对象被销毁前执行该方法,该方法会在最后执行
__getattr__
:会在对象.属性的时候如果没有属性才会触发
默认返回none,若想打印属性的结果,必须return一个值,否则会报错
__setattr__
:会在"对象.属性=属性值"时触发
注意:执行该方法时,外部"对象.属性=属性值"时无效
__call__
:会在对象被调用时触发
__new__
:会在__init__
执行之前触发
单例模式
面试题
单例模式指的是单个实例,实例指的是调用类产生的对象,实例化多个对象会产生不同的内存地址,单例可以让所有的调用者在调用产生对象的情况下都指向同一个内存地址,例如打开文件,单列的目的:
@classmethod
def sing(cls):
obj=cls(settings.USER,settings.PWD)
return obj