我們可以用它的鍵呼叫字典中的值。
class mymodel(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super().__call__(*args, **kwargs)
return cls._instances[cls]
class mytest(object,metaclass=mymodel):
pass
檢查其歸屬。
mytest._instances
{}
mytest第一次呼叫讓它包含一個屬性_instances。
mytest()
<__main__.mytest object at 0x7f3286774b20>
mytest._instances
{<class '__main__.mytest'>: <__main__.mytest object at 0x7f3286774b20>}
type(mytest._instances)
<class 'dict'>
mytest._instances.keys()
dict_keys([<class '__main__.mytest'>])
用鍵呼叫它的值:
mytest._instances[<class '__main__.mytest'>]
File "<stdin>", line 1
mytest._instances[<class '__main__.mytest'>]
^
SyntaxError: invalid syntax
mytest._instances["<class '__main__.mytest'>"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: "<class '__main__.mytest'>"
嘗試用反斜杠轉義\:
mytest._instances[\<class '__main__.mytest'\>]
File "<stdin>", line 1
SyntaxError: unexpected character after line continuation character
mytest._instances["\<class '__main__.mytest'\>"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: "\\<class '__main__.mytest'\\>"
那么如何mytest._instances 用鍵呼叫值 呢?
uj5u.com熱心網友回復:
這不是一個字串,它是一個類物件。
你應該使用:
mytest._instances[mytest]
uj5u.com熱心網友回復:
當您查看 mytest._instances 時,它會向您顯示字典包含的內容:
mytest._instances
{<class '__main__.mytest'>: <__main__.mytest object at 0x7f3286774b20>}
即字典鍵是 mytest 的類,字典值是我的測驗的特定實體
因此,您可以使用以下方法獲取值:
mytest._instances[mytest]
<__main__.mytest object at 0x7f3286774b20>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/310933.html
