Imaginez un code comme celui-ci:
sample.py
class Sample:
sample_list = []
def __init__(self, args1):
self.name = args1
def add_args(self, args2):
self.sample_list.append(args2)
Lorsque j'exécute ce code, la liste_exemple est partagée entre a et b comme indiqué ci-dessous.
>>> a = Sample('a')
>>> b = Sample('b')
>>> a.add_args('hoge')
>>> b.add_args('huga')
>>> a.sample_list
['hoge', 'huga']
Vous pouvez éviter ce problème en concevant la classe avec des variables d'instance comme suit.
sample.py
class Sample:
def __init__(self, args1):
self.name = args1
self.sample_list = []
def add_args(self, args2):
self.sample_list.append(args2)
Résultat d'exécution
>>> a = Sample('a')
>>> b = Sample('b')
>>> a.add_args('hoge')
>>> b.add_args('huga')
>>> a.sample_list
['hoge']
>>> b.sample_list
['huga']
Documentation Class-Python 3.8.5
Recommended Posts