Наследование методов классов в pyton
Метод класса наследника затирается методом предка.
При инициализации класса ExcelDataOwnerWithCaching
вызывается метод __get_data
класса DataOwner
, а не DataOwnerWithCaching
. Как мне добиться обратного, что я делаю не так?
from abc import ABC, abstractmethod
class DataOwner(ABC):
def __init__(self, **kwargs):
self.df = self.__get_data(
self.load_data,
**kwargs
)
@staticmethod
@abstractmethod
def load_data(**kwargs):
pass
def __get_data(self, data_loader, **kwargs):
return data_loader(**kwargs)
class DataOwnerWithCaching(DataOwner, ABC):
def __init__(self, key: str, **kwargs):
self.key = key
super().__init__(**kwargs)
def __get_data(self, data_loader, **kwargs):
"""Тут проверка ключа в кэше и возврат данных либо из кэша, либо из главного источника + занесение в кэш"""
print(data_loader, **kwargs)
return pd.DataFrame()
class ExcelDataOwner(DataOwner):
@staticmethod
def load_data(path: str, **kwargs):
return pd.DataFrame()
class ExcelDataOwnerWithCaching(DataOwnerWithCaching, ExcelDataOwner):
pass
ExcelDataOwnerWithCaching(
key='my_key',
path='my_data.xlsx',
)