ID をキーとして、クラスをエントリとして持つ辞書があります。ある特定のクラスの変数に追加しようとすると、辞書内の他のすべてのクラスも追加されます。
class Reaction:
def __init__(self, bkm_id, ec_nums = [], b_ids = [], k_ids = [], m_ids = [], source = ''):
self.bkm_id = bkm_id
self.ec_nums = ec_nums
self.b_ids = b_ids
self.k_ids = k_ids
self.m_ids = m_ids
self.source = source
self.substrates = []
self.products = []
def add_metabolite(self, metabolite, stoichiometry, subs_prod):
if subs_prod == 'S':
self.substrates.append(Substrate_Product(metabolite, stoichiometry))
elif subs_prod == 'P':
self.products.append(Substrate_Product(metabolite, stoichiometry))
クラスを定義します。次に、次のように入力します。
rxna = Reaction('a')
rxnb = Reaction('b')
dict = {}
dict['a'] = rxna
dict['b'] = rxnb
dict
Out[14]:
{'a': <__main__.Reaction instance at 0x102c51fc8>,
'b': <__main__.Reaction instance at 0x102c62518>}
dict['a'].b_ids.append('BID')
dict['a'].b_ids
Out[16]: ['BID']
dict['b'].b_ids
Out[17]: ['BID']
rxnb.b_ids
Out[18]: ['BID']
一方、「BID」を rxna.b_ids に追加したいだけでした。明らかな何かが欠けていますか?