私の仕事は実際にはとても簡単です。たぶん私は自分の過ちを見ないためにC + +にあまりにも慣れています。 私は2つのクラスとリストを持っています。 リストにはclass1で作成されたすべてのオブジェクトが含まれている必要がありますが、class1にはclass2のすべてのオブジェクトのリストも含まれています。 だから我々は持っている:"個別の"オブジェクトを作成する方法
# class1 objects:
obj1= class1()
obj2= class1()
# class2 objects
obj3 = class2()
obj3.name, obj3.number = "hello world", 10
obj4 = class2()
obj4.name, obj3.number = "hello europe", 20
obj5 = class2()
obj5.name, obj3.number = "hello asia", 30
obj6 = class2()
obj6.name, obj3.number = "hello africa", 40
# Attach object3 and object4 to object1
obj1.All_Objects2.append(obj3)
obj1.All_Objects2.append(obj4)
# Attach object5 and object6 to object2
obj2.All_Objects2.append(obj5)
obj2.All_Objects2.append(obj6)
# Attach obj1 and obj2 to the global list.
All_Objects1.append(obj1)
All_Objects1.append(obj2)
そして最後に、私はそれが属するところすべてがあるかどうかをチェックするための印刷を行います:
All_Objects1 = [] # For class1 objects
class class1 (object):
All_Objects2 = [] # For class2 objects
class class2 (object):
name = ""
number = 0
今、私はこれを行う
print (len(All_Objects1[0].All_Objects2)) # Should be 2.
for i in All_Objects1[0].All_Objects2:
print (i.name) # Should be world and europe.
print (len(All_Objects1[1].All_Objects2)) # Should be 2.
for i in All_Objects1[1].All_Objects2: # Should be asia, africa.
print (i.name)
を今問題があります、すべてのobject2はすべてのobject1にあり、私は理由を知りません。私はこのような何かを私の実際のプログラムで
、何が実際のC++で動作します:
#pseudo
for i in all_information:
if (i==Keyword):
currentObject = class1()
All_objects.append(currentObject)
そして私は私のリストには、いくつかの独立したオブジェクトを持つことになります。しかし、Pythonでは、私は何とか "currentObject"を上書きすることができないと思う。
ありがとうございました。
クラスにinit関数を追加してみてください。私は多分、Pythonはそれのための新しいメモリブロックを作成することを知らないと思う:https://www.tutorialspoint.com/python/python_classes_objects。htm 空の/空白のinit(唯一のコマンドとしての書き込みパス)でもトリックを行う必要があります –
なぜクラス外の最初のリストを使用していますか?なぜあなたはクラスを初期化していないのですか?あなたはなぜ継承を使っていないのですか? –
'All_Objects2 = []'はすべてのオブジェクトに共有要素を作成します。 '__init__'関数を使って' self.All_Objects2 = [] 'を作成する – furas