如何实现frozenset
的Multiton设计模式,无论frozenset
是如何创建的,都能正常工作?你知道吗
我要寻找的是一个行为类似于frozenset
的类,但是它是“完全的内部”的:对于任何两个实例,如果a == b
,那么a is b
。你知道吗
对this question的回答
似乎为传递给构造函数的每个参数都生成一个实例(并且似乎假定这些参数是可哈希的)。但是一个给定的frozenset
可以用许多不同的方式构造:构造器可以得到元素顺序不同的元组,或者不可破坏的列表;或者您可以使用一些操作符,比如a.union(b)来创建frozenset,等等
动机自然是——努力保存记忆。我有一个图,其中有许多顶点用循环的frozenset
标记。这个图是通过从旧顶点创建新顶点来“生长”的,而新的frozenset
是通过从旧顶点添加或删除元素来获得的。你知道吗
非常感谢!你知道吗
可以使用
__new__
方法在frozenset
周围创建包装器。我引用the doc:其思想是缓存创建的每个包装,并始终为相同的
frozenset
返回相同的实例。你知道吗有一个小技巧:
frozenset
的元素本身就是frozenset
,它们也应该被包装。你知道吗示例:
现在,我们必须重新实现
frozenset
的方法来获得一个完美的匹配。这对他们中的一些人来说很容易:只需将工作委托给包装的frozenset
:但是对于某些方法,必须处理
frozenset
和FrozenSetWrapper
:或返回类型:
实习的想法是有道理的,但实施起来可能会很棘手,因为边缘的情况。你知道吗
这里有一个可能的解决方案。你知道吗
运行此:
结果:
但是这个:
给予
根据需要。你知道吗
我本来希望使用一些Python的魔法可以隐藏“引擎盖下”的简单逻辑,但我猜这有一个直接和透明的优势。你知道吗
相关问题 更多 >
编程相关推荐