__new__方法和pop方法(判斷)
阿新 • • 發佈:2018-11-03
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]