解读API的一些积累
一 函数部分
1 getaddr(对象,‘属性’,默认值)函数 返回类的对象属性具体值 ,如果没有,则会触发AttributeError错误异常 效果等同于hasaddr
setattr(对象,‘属性‘,值‘) 将对象赋予某种属性
class a:
def __init__(self,d):
self.d=d
e=a(‘12‘)
print(getattr(e,‘d‘))
2 isinstance(object, classinfo) 函数
判断实例对象object是否属于classinfo 属于的话输出true 否则false
场景 1 实例是否属于类对象 2 数据是否属于某一类型类
class a:
def __init__(self,d):
self.d=d
e=a(‘12‘)
print(isinstance(e,a))
二 面向对象部分-类方法
1 类方法必带参数cls,由类本身调用,调用时不用指定,会自动传递进去,cls可以直接看成类本身,可以直接通过 cls.name 这样方式调用类变量
2 类方法内部不能调用实例化对象初始化的属性,因为无法传递self参数,但是能传递类变量和类函数
3 类方法的好处是不需要实例化,直接调用,也不用关心实例化的参数
4 apiview 重写了as_view和dispatch方法
5 一切皆为对象,如果函数内部再次定义函数,就必须return这个函数本身,函数本身也是个对象 这样做的好处在于 定义内部可以直接使用外部环境的参数。
class a:
def __init__(self,d):
self.d=d
@classmethod
def c(cls):
print(‘ok‘)
print(a.c())
三 面向对象部分-继承
1 子类调用父类方法 super().父类函数(非初始化函数)
class a:
def c(self):
print(‘ok‘)
class b(a):
def d(self):
super().c()
b().d()
四 总结
1) drf 对原生request做了二次封装,request._request就是原生request
2) 原生request对象的属性和方法都可以被drf的request对象直接访问(兼容)
3) drf请求的所有url拼接参数均被解析到query_params中,所有数据包数据都被解析到data中