Ho una classe astratta strutturata in un modo simile a questo:
class AbstractQuery(object, zip_code):
def execute(self):
"""
Retrieve information about a zip code
The information returned will depend on the subclass
"""
url, params = self._build_query(zip_code)
response = requests.get(url, params=params)
if self._is_valid(response):
# etc.
def _build_query(self, zip_code):
"""
Returns a tuple (url, params) where
url is the url of the API to query and
params are the query params for the API call
"""
raise NotImplementedError
def _is_valid(self, response):
"""
Returns True if response contains information necessary
to continue processing
"""
raise NotImplementedError
_build_query
, ad esempio, farà sempre la stessa cosa, ci saranno solo piccole differenze di implementazione. Devo semplicemente mantenere la docstring nella classe base? Oppure copiarlo / incollarlo e violare DRY? Che cosa vorrebbe vedere un utente o un manutentore di queste classi?