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
将名称作为键会更好,然后你就不用保留引用来保持对象的活动性了。。。