Creazione di classi soggette a vincoli

di il
1 risposte

Creazione di classi soggette a vincoli

Ho difficoltà con Python a generare delle classi di appartenenza soggette a dei vincoli.
Supponiamo di avere 2 tabelle su excel con gli stessi valori ma ordinate (in ordine decrescente) per indici differenti (età e anni di servizio), provo a scrivere un esempio molto banale della questione:
1 tabella:
Nome Età
Mario 49
Filippo 34
Giovanni 28
Michele 24
Pasquale 22

2 tabella:
Nome Anni di servizio
Filippo 12
Mario 6
Giovanni. 5
Pasquale. 3
Michele. 1

Vorrei sviluppare in Python un codice che mi permetta di andar a definire delle classi. - ad esempio classe A con vincolo età<25 e anni di servizio >2
Classe B.....

1 Risposte

  • Re: Creazione di classi soggette a vincoli

    Salve,
    se il problema è creare un oggetto solo quando rispetta dei parametri precisi,
    una possibile soluzione potrebbe essere eseguire degli if nel metodo costruttore __init__, in questo modo:
    
    class A:
    	def __init__(self, nome, eta, anni_servizio):
    		self.nome = nome
    		
    		if eta<25:
    			raise Exception('Eta non valida') #Restituisci una eccezione (errore)
    		else:
    			self.eta = eta
    		
    		if anni_servizio<2:
    			raise Exception('Anni di servizio non validi') #Restituisci una eccezione (errore)
    		else:
    			self.anni_servizio = anni_servizio
    
    con tale classe, dovresti richiamare il costruttore con il costrutto try-except, in questo modo:
    
    try:
    	il_mio_oggetto = A("esempio", 30, 5) #nome, eta, anni di servizio
    except Exception as errore:
    	#Porzione di codice eseguita quando si verifica un'eccezione
    	print(repr(errore))
    
    NB: Questa soluzione restituisce un errore quando generi una oggetto con dei campi che non rispettano delle determinate caratteristiche, quindi usi il try per impedire l'arresto del programma in esecuzione; unaltra possibilità sarebbe quella di fare controlli prima di costruire l'oggetto, in tal caso non avresti alcuna necessità di usare il try e il raise, ma basterebbe ignorare la creazione dell'oggetto con un pass.


    Se non era questo il tuo problema, potresti chiarire cosa ti serve sapere?
Devi accedere o registrarti per scrivere nel forum
1 risposte