lettura facile

L'attributo args nelle eccezioni in Python

Nel linguaggio Python l'attributo args è presente in tutte le eccezioni e contiene tutti gli argomenti passati durante la creazione dell'istanza dell'eccezione.

Gli argomenti sono registrati nell'argomento "args" sotto forma di tupla.

Ad esempio, in questo codice proviamo a dividere un numero per zero.

try:
    x=1
    y=0
    z=x/y
    print(z)
except ZeroDivisionError as e:
    print(e.args)

Viene intercettata l'eccezione ZeroDivisionError è assegnata alla variabile "e".

Se interroghiamo l'attributo e.args, Python restituisce una tupla con alcuni argomenti,

('division by zero',)

Lo stesso accade nelle eccezioni personalizzate.

In questo semplice esempio solleviamo un'eccezione con due argomenti e Python li registra nell'attributo args.

class MyException(ZeroDivisionError):
    pass

try:
    raise MyException("Divisione per zero",2024)
except MyException as e:
    print(e.args)

('Divisione per zero', 2024)

Questo comportamento è ereditato dalla classe BaseException ed è valido anche quando il costruttore (__init__) dell'eccezione viene sovrascritto in una classe di eccezione personalizzata.

In questo esempio modifichiamo il costruttore dell'eccezione personalizzata e creiamo un'istanza.

L'attributo args contiene gli argomenti passati durante l'istanziazione dell'eccezione.

class MyException(ZeroDivisionError):
    def __init__(self, msg,year):
        self.msg = msg
        self.year = year

ex = MyException("Divisione per zero",2024)
print(ex.args)

('Divisione per zero', 2024)

Pertanto, anche quando sovrascriviamo il costruttore per aggiungere un attributo personalizzato (msg), gli argomenti vengono comunque inseriti in args.




Se qualcosa non ti è chiaro, scrivi la tua domanda nei commenti.




FacebookTwitterLinkedinLinkedin