python - 为什么不能用它的键调用字典的值?
问题描述
我们可以用它的键调用字典中的值。
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
用键调用值呢?
解决方案
这不是一个字符串,它是一个类对象。
你应该使用:
mytest._instances[mytest]
推荐阅读
- android - kotlin.math.sin(Double) <> Windows Calculator Sin 输出
- r - R:线性代码链的丰富调试
- javascript - 如何处理 vuex 调度响应?
- javascript - javascript反应来自方法的传递值
- c# - DBSet:ToList() 有效,但 DBSet:ToListAsync() 无效?为什么?
- javascript - 如何使用 JavaScript XMLHttpRequest 将多个参数传递给@RequestBody
- c - 在 C 中使用 malloc 确保用户输入某些数字
- javascript - 如何在没有 html 的 js 文件中包含 jQuery
- java - 通过控制台删除文本文件中的行(对象)
- typescript - 如果您以 ESNext 为目标,某些 typescript 3.7 功能不可用是怎么回事?