我的具体情况如下:我有一个带有一些参数的对象,例如a,b,c和d。当我创建这个对象的新实例时,我想要发生的是它在字典中检查元组(a,b,c,d),如果这个键存在,那么它返回一个用参数a创建的现有实例, b,c和d。否则,它将创建一个带有参数a,b,c和d的新参数,使用键(a,b,c,d)将其添加到字典中,然后返回此对象。
这个代码并不复杂,但我不知道把它放在哪里 - 显然它不能进入__init__方法,因为分配给self不会改变它,而在这一点上新的实例已经完成。问题是我根本不了解对象实例的创建,以及如何做除了创建新实例之外的其他事情。
目的是防止冗余以节省内存;将会创建许多对象,其中许多对象应该是相同的,因为它们具有相同的参数。它们将是不可改变的,因此改变其中一个并影响其余部分就没有危险。如果有人能给我一个实现这个的方法,或者确实有比我提出的解决问题更好的方法,我将不胜感激。
该课程类似于:
class X:
dct = {}
def __init__(self, a, b, c, d):
self.a = a
self.b = b
self.c = c
self.d = d
在某处我需要代码:
if (a,b,c,d) in X.dct:
return X.dct[(a,b,c,d)]
else:
obj = X(a,b,c,d)
X.dct[(a,b,c,d)] = obj
return obj
我希望在执行以下操作时运行此代码:
x = X(a,b,c,d)