day 22

day 22 classmethod,staticmethod,uuid,isinstance,issubclass,反射,魔法方法,单列

01.classmethod:一个类方法

  1. 是一个装饰器,可以装饰给类内部的方法,使该方法绑定给类来使用
  2. 类的绑定方法;由类来调用,会将类当作第一个参数传给该方法
  3. 主要用于编写源码

02.staticnethod;非绑定方法

  1. 是一个装饰器,可以装饰给类内部的方法,使该方法变成一个普通函数,可以不接收任何参数

03.uuid;生成字符串的加密模块

  1. uuid4;通过当前时间戳生成一串字符串

04.isinstance;用来判断对象是否为该类的实例

  1. Isinstance(对象,类) 判断参数1是否是参数2的一个实例
  2. 对象.__class__获取对象的类

05.issubclass;用来判断一个类是否为另一个的子类

  1. issubclass(类1,类2) 判断参数1是否是参数2的一个子类

06.反射

  1. 反射指的是通过字符串对,对象或类的属性进行操作
    1. hasattr(对象/类,属性名);判断属性;通过字符串,判断该字符串是否是对象或类的属性
    2. getattr(对象/类,属性名,默认值);获取属性;通过字符串,获取对象或类的属性,没有返回默认值
    3. setattr(对象/类,属性名,属性值);设置属性;通过字符串,修改对象或类的属性
    4. delattr(对象/类,属性名);删除属性;通过字符串,删除对象或类的属性
    5. 可以用来与用户交互

07.魔法方法(类的内置方法)

  1. 凡是在类内部定义的,以__属性名__方式的属性,都称之为魔法方法,又称为类的内置方法

  2. 魔法方法会在某些条件成立时触发.

  3. __init__(self): # 在调用类时触发
    __str__(self): # 在打印对象时触发,必须有字符串返回值
    __del__(self): # 会在程序结束时触发,在垃圾回收机制将对象销毁前执行
    __getattr__(self,item): # 在对象.属性,没有该属性时触发
    __setattr__(self,key,value): # 在对象.属性=属性值时触发,不会再执行对象.属性=属性值
    __call__(self, *args, **kwargs): # 在对象被调用时触发
    __new__(cls,*more): # 会在__init__被执行前触发
    
    

08.单列模式

  1. 单个实例,对完全相同的对象只实例化一次

  2. 为了减少内存占用

  3. 在运行类内部__init__之前,先判断这个对象是否存在,存在直接返回该对象,不存在则实例化

原文地址:https://www.cnblogs.com/luocongyu/p/11668799.html