__new__方法和pop方法(判断)

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]

猜你喜欢

转载自www.cnblogs.com/yunxintryyoubest/p/9899499.html