import numbersclass intfield:
# 資料屬性描述符 ,實現了get和set
def __get__(self, instance, owner):
return self.value
def __set__(self, instance, value):
if not isinstance(value, numbers.integral):
raise valueerror('argument must be digital')
self.value = value
def __delete__(self, instance):
pass
class nonedataintfield:# 非資料屬性描述符,只實現了其中一種方法
def __get__(self, instance, owner):
pass
class user:如果user 是某個類的例項,那麼user.age(以及等價的getattr(user, 'age'))age = intfield()
if __name__ == '__main__':
user = user()
user.age = 'abc'
# print(user.birthday.year)
# print(user.age)
print(user.age)
首先呼叫 __getattribute__。如果類定義了__getattr__方法,那麼在__getattribute__丟擲attributeerror的時候就會呼叫到__gettattr__,而對於描述符(__get__)的呼叫, 則發生在__getattribute__內部的。
user = user(),那麼user.age順序如下:
1)如果'age'是出現在user或者其基類的__dict__中, 且age是data descriptor,那麼呼叫其__get__方法,否則
2)如果'age』出現在user的__dict__中, 那麼直接返回user.__dict__['age'],否則
3)如果'age'出面在user或者其基類的__dict__中,
3.1)如果age是none-data descriptor,那麼呼叫其__get__方法,否則
3.2)返回user.__dict__['age']
4)如果user有__getattr__方法, 呼叫__getattr__方法,否則
5)丟擲attributeerror
Elasticsearch查詢過程
客戶端向集群中的某個節點 假設節點1 發起查詢請求,節點1會建立乙個from size大小的佇列 from 偏移量,size 要取回的文件個數 節點1向集群中所有其他的分片 主或從 發起查詢請求,每個分片也會建立乙個from size大小的佇列,並將查詢結果新增到佇列中。其他分片將查詢到的文件id和...
DNS查詢過程
dns domain name system 將網域名稱和ip位址相互對映的乙個分布式資料庫服務。dns使用的是網路查詢,使用的埠是53號埠 通常dns是以udp資料傳輸協議來查詢的,當沒有查詢到完整的資訊時,就會再次以tcp這個協議來重新查詢。所以在啟動dns時,會同時啟動tcp和udp的53號埠...
DNS查詢過程
dns查詢過程 假設www.abc.com的主機要查詢www.xyz.abc.com的伺服器ip位址。知識點2 域 abc.com是乙個域,它可以劃分為多個區域,如abc.com和xyz.abc.com 步驟遞迴查詢 第二步 上一步無法找到,去dns本地伺服器 即域伺服器 查詢,其本質是去區域伺服器...