1. 程式人生 > >__new__方法和pop方法(判斷)

__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]