Secondo Pycharm (e quindi assumo secondo PEP) dovrei dichiarare tutti gli attributi di istanza direttamente all'interno di __init__
. Nel mio caso non mi sembra adatto. Ho qualcosa come:
class Handler(object):
def __init__(self):
self.start_index = # parse
# Do stuff
def parse(self):
parse_header()
# Do stuff
parse_body()
def parse_header():
raise NotImplementedError
def parse_body():
raise NotImplementedError
class StringHandler(Handler):
def parse_header():
self.string_index = # parse
self.string_count = # parse
self.style_index = # parse
self.style_count = # parse
# More here
def parse_body():
self.strings = # parse
self.styles = # parse
# More here
class IntHandler(Handler):
def parse_header():
self.int_index = # parse
self.int_count = # parse
# More here
def parse_body():
self.ints = # parse
# More here
Dato che ci sono oggetti (molti di questi) che derivano tutti dalla classe Handler
, la struttura di ogni oggetto è abbastanza ovvia per chiunque legga il codice. Per me sembra un inutile ingombramento per dichiarare __init__
solo per il fatto di chiamare genitore __init__
e dichiarare un paio di parametri come None
. Solitamente le funzioni parse
-ing analizzano solo ciò che è necessario e lo memorizzano negli attributi, aggiungendo così __init__
a volte raddoppierà quasi la dimensione della classe (in termini di codice).
modifica: ho cercato questo problema, ma non ho trovato risposta adatta, ad esempio durante la ricerca di stackexcahnge, le domande erano troppo ampie per ottenere una risposta utile ( Come faresti a sapere se hai scritto un codice leggibile e facilmente gestibile? ) o ponendo domande diverse ( È buona pratica dichiarare variabili di istanza come None in una classe in Python? )