Python 3.x 创建实例的类dict

Python 3.x 创建实例的类dict,python-3.x,class,Python 3.x,Class,我想让一个类在字典中跟踪它的实例。例如,对于这门课,我想 class Test(object): count = 0 elements = {} def __init__(self, a, b): self.a = a self.b = b Test.count += 1 def __repr__(self): return "[a=%s, b=%s]" % (self.a, self.b) a

我想让一个类在字典中跟踪它的实例。例如,对于这门课,我想

class Test(object):
    count = 0
    elements = {}
    def __init__(self, a, b):
        self.a = a
        self.b = b
        Test.count += 1

    def __repr__(self):
        return "[a=%s, b=%s]" % (self.a, self.b)

a = Test(1, 3)
b = Test(3, 5)
c = Test(9, 9)
Test.count
# Test.elements # WANT: {1:"a", 2:"b", 3:"c"}

# Added later:
# How to avoid appending to list
Test.el = []                
AA = Test(1, 3)
Test.el.append("AA") # avoid this?
BB = Test(3, 5)
Test.el.append("BB")
CC = Test(9, 9)
Test.el.append("CC")
print(Test.el)
# Then call the AA, BB, CC. Does not work either.
# for o in Test.el:
#     print(o.a)
如何创建一个元素dict,比如class count变量


Thx+亲切问候

您可以通过以下方式进行

class Test(object):
    elements = []
    def __init__(self, a, b):
        self.a = a
        self.b = b
        #Test.count += 1
        Test.elements.append(self)

    def __repr__(self):
        return "[a=%s, b=%s]" % (self.a, self.b)

a = Test(1, 3)
b = Test(3, 5)
c = Test(9, 9)
print Test.elements

关键是什么?为什么不使用列表呢?请注意,您会将所有对象保留在内存中,这可能是不好的行为,因为这基本上是内存消耗。列表也可以。。(我不想复制实例本身,只想自动创建一个显示所有名称的dict或list)。@r.user.05apr你所说的显示所有名称是什么意思?你到底想在这里做什么?很容易认为任何对象都不知道自己的名称(并且可以有多个名称)
a=Test(1,3);b=a;c=b应该显示给你看吗?不使用
dict
将名称作为键会更好,然后你就不用保留引用来保持对象的活动性了。。。