在我找到這個邏輯之前,我很清楚字典在 Python 中是如何作業的。
class Sample:
__test = {}
def __init__(self):
self.__dict__ = self.__test
self.key = "answer"
self.count = "numbers"
def print_test(self):
print(self.__test)
s = Sample()
s.print_test()
在上面的代碼中,字典被初始化,然后將相同的變數分配給類字典。在下一行中,我們為類初始化了另外 2 個變數。
最后,我們將 Sample 類初始化為“s 物件”
根據我的理解,這應該跟隨輸出并且 __test 字典應該是空的
s.count = "numbers"
s.key = "answers"
但令我驚訝的是 print_test 函式回傳
{'count': 'numbers', 'key': 'answer'}
誰能解釋 __test 字典如何將這些專案作為鍵值對。
uj5u.com熱心網友回復:
該__init__函式按順序運行。當您設定 時self.__dict__ = self.__test,您將物件的內部狀態字典分配為空。但是,當您下一次設定 和 的值時self.key,self.count這些屬性將被添加到現在為空的self.__dict__中,并通過相互賦值,self.__test
您可以在方法末尾看到分配空 dict 的差異__init__。
class Sample:
__test = {}
def __init__(self):
self.key = "answer"
self.count = "numbers"
self.__dict__ = self.__test
def print_test(self):
print(self.__test)
s = Sample()
s.print_test()
# prints:
{}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410055.html
標籤:
