2017-11-20 11 views
-1

クラスに辞書のインスタンスを追跡させたいと思っています。たとえば、このクラスのために私が手に入れたいのはクラスのインスタンスを作成する

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) 

class-count変数のように要素辞書を作成するにはどうすればいいですか?

Thxを+よろしく

+1

次の方法で行うことができますか?なぜリストを使用しないのですか? –

+0

すべてのオブジェクトをメモリに保持することに注意してください。これは、基本的にメモリがなくなるため、悪い動作になることがあります。 –

+0

リストも大丈夫でしょう(そしてインスタンス自体をコピーするのではなく、すべての名前を表示するdictまたはリストを自動的に作成するだけです)。 –

答えて

0

あなたはキーになり何

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 
関連する問題