new方法(构造方法)是在函数一加载的时候就被执行,在init方法执行之前被执行
def __new__(cls,*args,**kwargs):
if kwargs.pop('many',False)##判断many是true还是flase
return cls.many_init(*args,**kwargs)##如果是false的话,就返回当前类的方法
判断这个是true还是false
return super(Base,cls).__new__(cls,*args,**kwargs)否则的话,就返回父类的new方法
就是listserializer方法
在init方法执行之前,先执行了__new__方法
xx(obj,many=False)上面返回的是xx,当前的对象进行序列化操作(当前类的序列化对象)
xx(queryset,many=True)下面返回的是listserializter(对每一个对象进行序列化操作)
字典的pop方法(可以判断name属性存不存在值)
one={'name':'2132332'}
#one={'name':''}当是这种形式的话,就执行下面的函数,不存在值
###这个是判断你存不存在后面的这个值,通过pop的方法,
if one.pop('name'):
print('存在值')
print(one) else:
print('other')
print(one)
结果:
存在值
{}
'''
pop方法讲解:
当这个字典的某属性后面存在值的话(不管是什么都可以,只要存在值),那么就可以pop操作成功,移除成功,就是那个字段后面对应了值的话,name后面存在值
当字典后面不存在值的话,那么就不可以移除,那么就为false,执行下面的函数
'''
按照索引来移除:
a=[12,435,54,656]
a.pop(-1)
print(a)
结果:
[12, 435, 54]