Я создаю иерархию классов с базовым типом, который будет иметь 2 (и, вероятно, в будущем) реализации подкласса.
Моя первая идея - создать абстрактный базовый класс (унаследованный от * 1003).*) с @abstractmethod
s, где это необходимо (для методов, которые будут отличаться в моих конкретных подклассах), но также с общими реализациями методов (для методов, используемых всеми конкретными подклассами).
Вот пример того, что я имею в виду:
from abc import ABC, abstractmethod
class BaseClass(ABC):
def __init__(self, var1, var2):
self.var1 = var1
self.var2 = var2
def common_method(self):
"""This method is used as-is by all subclasses."""
return self.var1 + 1
@abstractmethod
def specific_method(self):
"""This method needs specific implementations."""
Является ли это хорошей практикой (а не "наилучшей практикой"; я ищу, является ли это правильным использованием этих конструкций) для написания базового класса?Является ли использование методов экземпляра в моем BaseClass
уместным?