Добрый день. У меня есть 3 класса-дочери, каждый из которых может вызывать 3 одинаковых метода. В конструкторе классов идет заполнение словаря. Но когда я распечатываю словарь, я обнаруживаю, что в каждом классе содержатся данные из всех 3-х классов. Подскажите, как правильно создать классы, чтобы не нужно было 3 одинаковых метода прописывать в каждый?
Пример:
class CECommon:
data = {}
def get(self):
return self.data
def get_by_id(self, id, only_name=True):
if id not in self.data:
return False
return self.data[id]['name'] if only_name else self.data[id]
def search_by_name(self, name):
return {k: val for k, val in self.data.items() if val['name'].lower().count(name.lower())}
class AAA(CECommon):
def __init__(self, text):
for row in text.splitlines():
val = row.split(';')
self.data[int(val[0])] = {
'id': int(val[0]),
'pos_id': int(val[1]),
'name': val[2],
}
self.__data = dict(sorted(self.data.items(), key=lambda x: x[1]['name']))
class BBB(CECommon):
def __init__(self, text):
for row in text.splitlines():
val = row.split(';')
self.data[int(val[0])] = {
'id': int(val[0]),
'name': val[1],
}
self.__data = dict(sorted(self.data.items()))
class CCC(CECommon):
def __init__(self, text):
for row in text.splitlines():
val = row.split(';')
self.data[int(val[0])] = {
'id': int(val[0]),
'name': val[1],
}
self.__data = dict(sorted(self.data.items(), key=lambda x: x[1]['name']))
Если вызвать ССС.get() (конечно, после того как вызвали перед этим все 3 класса и заполнили данными) то получим словарь с данными всех (AAA, BBB, CCC) классов