class Memo(type):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.__cache = {}
def __new__(cls, *args, **kwargs):
return type.__new__(cls, *args, **kwargs)
def __call__(self, _id, *args, **kwargs):
if _id not in self.__cache:
self.__cache[_id] = super().__call__(_id, *args, **kwargs)
else:
print("Existing Instance")
return self.__cache[_id]
class Foo(metaclass=Memo):
def __init__(self, _id, *args, **kwargs):
self.id = _id
def test():
first = Foo(_id="first")
second = Foo(_id="first")
print(id(first) == id(second))
if __name__ == '__main__':
test()
Clean Python第四章元类部分 4-15演示代码修正
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:github提交忽略idea
下一篇:油候插件grant的使用
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Python学习:第四章
第四章:Python程序控制结构
python 控制结构 异常处理 -
Python第四章-字典
第四章 字典-当索引不好用时4.0 字典可以理解成是C++里的map,可以映射任何类型。字是...
python html 键值对 -
第四章(下)
OpenCV中有多种选取区域的方法,罗列在表中。使用方法如下,其中比较值得注意的是
稀疏矩阵 #include 3d