espaƱol ejemplo python constructor pylint

python - ejemplo - Atributo de instancia attribute_name defined outside__init__



docstring python ejemplo (2)

La idea detrás de este mensaje es por el bien de la legibilidad. Esperamos encontrar todos los atributos que una instancia pueda tener al leer su método __init__ .

Sin embargo, es posible que desee dividir la inicialización en otros métodos. En tal caso, puede simplemente asignar atributos a None (con un poco de documentación) en __init__ luego llamar a los métodos de __init__ .

Separé el constructor de mi clase dejándolo invocar múltiples funciones, como esta:

class Wizard: def __init__(self, argv): self.parse_arguments(argv) self.wave_wand() # declaration omitted def parse_arguments(self, argv): if self.has_correct_argument_count(argv): self.name = argv[0] self.magic_ability = argv[1] else: raise InvalidArgumentsException() # declaration omitted # ... irrelevant functions omitted

Mientras mi intérprete ejecuta felizmente mi código, Pylint tiene una queja:

Instance attribute attribute_name defined outside __init__

Una búsqueda superficial en Google es actualmente infructuosa. Mantener toda la lógica de constructor en __init__ parece desorganizada, y apagar la advertencia de Pylint también parece piratear.

¿Cuál es la forma de Python para resolver este problema?


Simplemente devuelva una tupla de parse_arguments() y descomprima en atributos dentro de __init__ según sea necesario.

Además, recomendaría que use Excepciones en lugar de usar exit(1) . Obtiene trazados, su código es reutilizable, etc.

class Wizard: def __init__(self, argv): self.name,self.magic_ability = self.parse_arguments(argv) def parse_arguments(self, argv): assert len(argv) == 2 return argv[0],argv[1]