logo

Costruttori in Python

Prerequisiti: Programmazione orientata agli oggetti in Python, orientata agli oggetti Python3

Python3






class> GeekforGeeks:> ># default constructor> >def> __init__(>self>):> >self>.geek>=> 'GeekforGeeks'> ># a method for printing data members> >def> print_Geek(>self>):> >print>(>self>.geek)> # creating object of the class> obj>=> GeekforGeeks()> # calling the instance method using the object obj> obj.print_Geek()>

>

>

Produzione

GeekforGeeks>

Esempio del costruttore parametrizzato:

Python3




class> Addition:> >first>=> 0> >second>=> 0> >answer>=> 0> ># parameterized constructor> >def> __init__(>self>, f, s):> >self>.first>=> f> >self>.second>=> s> >def> display(>self>):> >print>(>'First number = '> +> str>(>self>.first))> >print>(>'Second number = '> +> str>(>self>.second))> >print>(>'Addition of two numbers = '> +> str>(>self>.answer))> >def> calculate(>self>):> >self>.answer>=> self>.first>+> self>.second> # creating object of the class> # this will invoke parameterized constructor> obj1>=> Addition(>1000>,>2000>)> # creating second object of same class> obj2>=> Addition(>10>,>20>)> # perform Addition on obj1> obj1.calculate()> # perform Addition on obj2> obj2.calculate()> # display result of obj1> obj1.display()> # display result of obj2> obj2.display()>

>

Java esegue il ciclo while
>

Produzione

First number = 1000 Second number = 2000 Addition of two numbers = 3000 First number = 10 Second number = 20 Addition of two numbers = 30>

Esempio:

Pitone




class> MyClass:> >def> __init__(>self>, name>=>None>):> >if> name>is> None>:> >print>(>'Default constructor called'>)> >else>:> >self>.name>=> name> >print>(>'Parameterized constructor called with name'>,>self>.name)> > >def> method(>self>):> >if> hasattr>(>self>,>'name'>):> >print>(>'Method called with name'>,>self>.name)> >else>:> >print>(>'Method called without a name'>)> # Create an object of the class using the default constructor> obj1>=> MyClass()> # Call a method of the class> obj1.method()> # Create an object of the class using the parameterized constructor> obj2>=> MyClass(>'John'>)> # Call a method of the class> obj2.method()>

>

>

Produzione

Default constructor called Method called without a name ('Parameterized constructor called with name', 'John') ('Method called with name', 'John')>

Spiegazione:

In questo esempio, definiamo una classe MyClass sia con un costruttore predefinito che con un costruttore parametrizzato. Il costruttore predefinito controlla se un parametro è stato passato o meno e stampa di conseguenza un messaggio sulla console. Il costruttore con parametri accetta il nome di un singolo parametro e imposta l'attributo name dell'oggetto sul valore di quel parametro.

Definiamo anche un metodo metodo() che controlla se l'oggetto ha o meno un attributo nome e stampa di conseguenza un messaggio sulla console.

Creiamo due oggetti della classe MyClass utilizzando entrambi i tipi di costruttori. Per prima cosa creiamo un oggetto utilizzando il costruttore predefinito, che stampa il messaggio Default costruttore richiamato sulla console. Quindi chiamiamo il metodo metodo() su questo oggetto, che stampa il messaggio Metodo chiamato senza nome sulla console.

Successivamente, creiamo un oggetto utilizzando il costruttore con parametri, passando il nome John. Il costruttore viene chiamato automaticamente e il messaggio Costruttore parametrizzato chiamato con il nome John viene stampato sulla console. Quindi chiamiamo il metodo metodo() su questo oggetto, che stampa sulla console il messaggio Metodo chiamato con il nome John.

Nel complesso, questo esempio mostra come entrambi i tipi di costruttori possono essere implementati in un'unica classe in Python.

Vantaggi dell'utilizzo dei costruttori in Python:

    Inizializzazione degli oggetti: i costruttori vengono utilizzati per inizializzare gli oggetti di una classe. Consentono di impostare valori predefiniti per attributi o proprietà e consentono inoltre di inizializzare l'oggetto con dati personalizzati. Facile da implementare: i costruttori sono facili da implementare in Python e possono essere definiti utilizzando il metodo __init__().
  • Migliore leggibilità: i costruttori migliorano la leggibilità del codice rendendo chiaro quali valori vengono inizializzati e come vengono inizializzati.
  • Incapsulamento: i costruttori possono essere utilizzati per imporre l'incapsulamento, garantendo che gli attributi dell'oggetto siano inizializzati correttamente e in modo controllato.

Svantaggi dell'utilizzo dei costruttori in Python:

    Overloading non supportato: a differenza di altri linguaggi orientati agli oggetti, Python non supporta l'overloading dei metodi. Ciò significa che non è possibile avere più costruttori con parametri diversi in una singola classe. Funzionalità limitate: i costruttori in Python sono limitati nella loro funzionalità rispetto ai costruttori di altri linguaggi di programmazione. Ad esempio, Python non ha costruttori con modificatori di accesso come public, private o protected. I costruttori potrebbero non essere necessari: in alcuni casi, i costruttori potrebbero non essere necessari, poiché i valori predefiniti degli attributi potrebbero essere sufficienti. In questi casi, l'utilizzo di un costruttore può aggiungere complessità non necessaria al codice.

Nel complesso, i costruttori in Python possono essere utili per inizializzare oggetti e imporre l'incapsulamento. Tuttavia, potrebbero non essere sempre necessari e hanno funzionalità limitate rispetto ai costruttori di altri linguaggi di programmazione.