python:返回现有对象而不是有条件地创建新对象

时间:2017-07-10 16:35:37

标签: python python-3.x object creation

我的具体情况如下:我有一个带有一些参数的对象,例如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)

0 个答案:

没有答案