logo

Konstruktory w Pythonie

Warunki wstępne: Programowanie obiektowe w Pythonie, obiektowo Python3

Python3




przełącz Javę



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()>

>

>

Wyjście

GeekforGeeks>

Przykład sparametryzowany konstruktor:

Python3


binarny do bcd



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()>

kupa

>

>

Wyjście

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

Przykład:

Pyton




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()>

normalizacja w bazie danych

>

>

Wyjście

scan.next Java
Default constructor called Method called without a name ('Parameterized constructor called with name', 'John') ('Method called with name', 'John')>

Wyjaśnienie:

W tym przykładzie definiujemy klasę MyClass zarówno z konstruktorem domyślnym, jak i konstruktorem sparametryzowanym. Konstruktor domyślny sprawdza, czy parametr został przekazany, czy nie, i odpowiednio wypisuje komunikat na konsoli. Sparametryzowany konstruktor pobiera nazwę pojedynczego parametru i ustawia atrybut name obiektu na wartość tego parametru.

Definiujemy również metodę method(), która sprawdza, czy obiekt ma atrybut name, czy nie, i wyświetla odpowiedni komunikat na konsoli.

Tworzymy dwa obiekty klasy MyClass przy użyciu obu typów konstruktorów. Najpierw tworzymy obiekt przy użyciu konstruktora domyślnego, który wypisuje na konsoli komunikat Konstruktor domyślny wywołany. Następnie wywołujemy metodę method() na tym obiekcie, która wypisuje na konsoli komunikat Metoda wywołana bez nazwy.

Następnie tworzymy obiekt za pomocą sparametryzowanego konstruktora, podając nazwę John. Konstruktor wywoływany jest automatycznie, a na konsoli wyświetlany jest komunikat Konstruktor sparametryzowany wywołany imieniem John. Następnie wywołujemy metodę method() na tym obiekcie, która wypisuje na konsoli komunikat Metoda wywołana o nazwie John.

Ogólnie rzecz biorąc, ten przykład pokazuje, jak oba typy konstruktorów można zaimplementować w jednej klasie w Pythonie.

Zalety używania konstruktorów w Pythonie:

    Inicjalizacja obiektów: Konstruktory służą do inicjowania obiektów klasy. Umożliwiają ustawienie domyślnych wartości atrybutów lub właściwości, a także umożliwiają inicjalizację obiektu niestandardowymi danymi. Łatwe do wdrożenia: Konstruktory można łatwo zaimplementować w Pythonie i można je zdefiniować za pomocą metody __init__().
  • Lepsza czytelność: Konstruktory poprawiają czytelność kodu, wyjaśniając, jakie wartości są inicjowane i w jaki sposób.
  • Enkapsulacja: Konstruktorów można używać do wymuszania enkapsulacji, upewniając się, że atrybuty obiektu są inicjowane poprawnie i w kontrolowany sposób.

Wady używania konstruktorów w Pythonie:

    Przeciążanie nie jest obsługiwane: W przeciwieństwie do innych języków obiektowych, Python nie obsługuje przeciążania metod. Oznacza to, że w jednej klasie nie można mieć wielu konstruktorów o różnych parametrach. Ograniczona funkcjonalność: Konstruktory w Pythonie mają ograniczoną funkcjonalność w porównaniu z konstruktorami w innych językach programowania. Na przykład w Pythonie nie ma konstruktorów z modyfikatorami dostępu, takimi jak publiczny, prywatny lub chroniony. Konstruktory mogą być niepotrzebne: w niektórych przypadkach konstruktory mogą nie być konieczne, ponieważ domyślne wartości atrybutów mogą być wystarczające. W takich przypadkach użycie konstruktora może zwiększyć niepotrzebną złożoność kodu.

Ogólnie rzecz biorąc, konstruktory w Pythonie mogą być przydatne do inicjowania obiektów i wymuszania enkapsulacji. Jednak nie zawsze mogą być one konieczne i mają ograniczoną funkcjonalność w porównaniu z konstruktorami w innych językach programowania.