【发布时间】:2013-08-28 21:45:27
【问题描述】:
假设 C 是一个 Python 类,并假设 C 的构造函数接受一个整数作为参数。
现在考虑说明
x = C(0)
y = C(0)
Python 的默认行为意味着 x 和 y 在内存中占据两个不同的位置。
是否可以强制 x 和 y 共享内存中的同一个位置?
如果某个 Python 装饰器能完成这项工作,我会非常高兴。
[注意]我正在寻找一种方法来记忆构造函数(有关函数的记忆,请参阅http://en.wikipedia.org/wiki/Memoization)。
[添加] Sage 开源数学软件通过UniqueRepresentation 类(见here)为这个问题提供了很好的解决方案。任何类都应该从这个类继承以获得预期的行为。不过,我想知道这个问题是否有纯 Python 解决方案。
【问题讨论】:
-
呃...为什么不
x = y = C(0)?或x = C(0); y=x? -
但是为什么 x = y = C(0)?当两个对象在数学上相等时,我希望它们共享相同的内存位置。假设 x = C(0) 被定义为函数 f 的局部变量,y = C(0) 被定义为另一个函数 g 的局部变量。
-
您是否在考虑按需复制之类的东西?比如当你
fork()时会发生什么?此外,x==y意义上的平等测试是__eq__的用途 -
我正在寻找一种方法来记忆构造函数。
-
请解释
memoization of constructors
标签: python object caching constructor decorator