Programowanie obiektowe to podstawowa koncepcja języka Python, umożliwiająca programistom tworzenie modułowych, łatwych w utrzymaniu i skalowalnych aplikacji. Rozumiejąc podstawowe zasady OOP — klasy, obiekty, dziedziczenie, enkapsulację, polimorfizm i abstrakcję — programiści mogą wykorzystać pełny potencjał możliwości OOP języka Python do projektowania eleganckich i wydajnych rozwiązań złożonych problemów.
Co to jest programowanie obiektowe w Pythonie?
W Pythonie programowanie obiektowe (OOP) to paradygmat programowania, który wykorzystuje obiekty i klasy w programowaniu. Ma na celu wdrożenie w programowaniu jednostek ze świata rzeczywistego, takich jak dziedziczenie, polimorfizmy, enkapsulacja itp. Główną koncepcją programowania obiektowego (OOP) lub koncepcji oops w Pythonie jest powiązanie danych i funkcji, które współpracują jako pojedyncza jednostka, tak aby żadna inna część kodu nie miała dostępu do tych danych.
Koncepcje OOP w Pythonie
- Zajęcia w Pythonie
- Obiekty w Pythonie
- Polimorfizm w Pythonie
- Enkapsulacja w Pythonie
- Dziedziczenie w Pythonie
- Abstrakcja danych w Pythonie

Koncepcje OOP w Pythonie
Klasa Pythona
Klasa to zbiór obiektów. Klasa zawiera plany lub prototyp, z którego tworzone są obiekty. Jest to jednostka logiczna zawierająca pewne atrybuty i metody.
Aby zrozumieć potrzebę utworzenia klasy, rozważmy przykład, załóżmy, że chcesz śledzić liczbę psów, które mogą mieć różne cechy, takie jak rasa i wiek. Jeśli używana jest lista, pierwszym elementem może być rasa psa, a drugim elementem może być jego wiek. Załóżmy, że jest 100 różnych psów. Skąd więc wiesz, który element powinien być który? A co jeśli chciałbyś dodać tym psom inne właściwości? Brakuje w tym organizacji i to jest właśnie potrzeba zajęć.
ciąg do int w Javie
Kilka punktów na temat klasy Pythona:
- Klasy tworzone są poprzez słowo kluczowe class.
- Atrybuty to zmienne należące do klasy.
- Atrybuty są zawsze publiczne i można uzyskać do nich dostęp za pomocą operatora kropki (.). Np.: Mojaklasa.Mójatrybut
Składnia definicji klasy:
class ClassName: # Statement-1 . . . # Statement-N>
Tworzenie pustej klasy w Pythonie
W powyższym przykładzie utworzyliśmy klasę o nazwie Dog przy użyciu słowa kluczowego class.
Pyton
# Python3 program to # demonstrate defining # a class class Dog: pass>
Obiekty Pythona
W programowaniu obiektowym w języku Python obiekt jest jednostką, z którą związany jest stan i zachowanie. Może to być dowolny obiekt ze świata rzeczywistego, taki jak mysz, klawiatura, krzesło, stół, długopis itp. Liczby całkowite, ciągi znaków, liczby zmiennoprzecinkowe, a nawet tablice i słowniki są obiektami. Mówiąc dokładniej, obiektem jest dowolna pojedyncza liczba całkowita lub dowolny pojedynczy ciąg znaków. Liczba 12 to obiekt, ciąg „Hello, world” to obiekt, lista to obiekt, w którym mogą znajdować się inne obiekty i tak dalej. Przez cały czas korzystałeś z obiektów i być może nawet nie zdawałeś sobie z tego sprawy.
Obiekt składa się z:
- Państwo: Jest reprezentowany przez atrybuty obiektu. Odzwierciedla także właściwości obiektu.
- Zachowanie: Jest reprezentowany przez metody obiektu. Odzwierciedla także reakcję obiektu na inne obiekty.
- Tożsamość: Nadaje obiektowi unikalną nazwę i umożliwia interakcję jednego obiektu z innymi obiektami.
Aby zrozumieć stan, zachowanie i tożsamość, weźmy przykład psa klasowego (wyjaśnione powyżej).
- Tożsamość można uznać za imię psa.
- Stan lub cechy można uznać za rasę, wiek lub kolor psa.
- Zachowanie można rozpatrywać pod kątem tego, czy pies je, czy śpi.
Tworzenie obiektu
Spowoduje to utworzenie obiektu o nazwie obj klasy Dog zdefiniowanej powyżej. Zanim zagłębimy się w obiekty i klasy, poznajmy kilka podstawowych słów kluczowych, które będą używane podczas pracy z obiektami i klasami.
algorytmy wyszukiwania binarnegoPython3
obj = Dog()>
Jaźń Pythona
- Metody klas muszą mieć dodatkowy pierwszy parametr w definicji metody. Wywołując metodę nie podajemy wartości tego parametru, Python ją udostępnia
- Jeśli mamy metodę, która nie przyjmuje argumentów, to nadal musimy mieć jeden argument.
- Jest to podobne do tego wskaźnika w C++ i tego odniesienia w Javie.
Kiedy wywołujemy metodę tego obiektu jako myobject.method(arg1, arg2), jest ona automatycznie konwertowana przez Pythona na MyClass.method(myobject, arg1, arg2) – to wszystko, o co chodzi w specjalnym self.
Notatka: Aby uzyskać więcej informacji, zobacz self w klasie Pythona
Metoda Pythona __init__
The metoda __init__ jest podobny do konstruktorów w C++ i Javie. Jest uruchamiany natychmiast po utworzeniu instancji obiektu klasy. Metoda ta jest przydatna do wykonania dowolnej inicjalizacji obiektu. Zdefiniujmy teraz klasę i utwórzmy kilka obiektów za pomocą metod self i __init__.
Tworzenie klasy i obiektu z atrybutami klasy i instancji
Python3 class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class attributes print('Rodger is a {}'.format(Rodger.__class__.attr1)) print('Tommy is also a {}'.format(Tommy.__class__.attr1)) # Accessing instance attributes print('My name is {}'.format(Rodger.name)) print('My name is {}'.format(Tommy.name))> Wyjście
Rodger is a mammal Tommy is also a mammal My name is Rodger My name is Tommy>
Tworzenie klas i obiektów za pomocą metod
Tutaj klasa Dog jest zdefiniowana za pomocą dwóch atrybutów:
różnica między lwem a tygrysem
- atr1 jest atrybutem klasy ustawionym na wartość ssak . Atrybuty klasy są wspólne dla wszystkich instancji klasy.
- __init__ to specjalna metoda (konstruktor), która inicjuje instancję klasy Dog. Przyjmuje dwa parametry: self (odnoszący się do tworzonej instancji) i name (reprezentujący imię psa). Parametr name służy do przypisania atrybutu name do każdej instancji Dog.
Metoda mówienia jest zdefiniowana w klasie Dog. Ta metoda drukuje ciąg znaków zawierający nazwę instancji psa.
Kod sterownika rozpoczyna się od utworzenia dwóch instancji klasy Dog: Rodger i Tommy. Metoda __init__ jest wywoływana dla każdej instancji w celu zainicjowania atrybutów nazw podanymi nazwami. W obu przypadkach wywoływana jest metoda mówienia (Rodger.speak() i Tommy.speak()), powodując, że każdy pies wypisze instrukcję ze swoją nazwą.
Python3 class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name def speak(self): print('My name is {}'.format(self.name)) # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class methods Rodger.speak() Tommy.speak()> Wyjście
My name is Rodger My name is Tommy>
Notatka: Aby uzyskać więcej informacji, zobacz Klasy i obiekty Pythona
Dziedziczenie w Pythonie
W programowaniu obiektowym w Pythonie dziedziczenie to zdolność jednej klasy do wyprowadzania lub dziedziczenia właściwości z innej klasy. Klasa, która wyprowadza właściwości, nazywana jest klasą pochodną lub klasą podrzędną, a klasa, z której wyprowadzane są właściwości, nazywana jest klasą bazową lub klasą nadrzędną. Korzyści z dziedziczenia to:
- Dobrze reprezentuje relacje w świecie rzeczywistym.
- Zapewnia możliwość ponownego użycia kodu. Nie musimy ciągle pisać tego samego kodu. Pozwala nam także dodawać więcej funkcji do klasy bez jej modyfikowania.
- Ma ona charakter przechodni, co oznacza, że jeśli klasa B dziedziczy po innej klasie A, wówczas wszystkie podklasy B automatycznie dziedziczą po klasie A.
Rodzaje dziedziczenia
- Pojedyncze dziedzictwo : Dziedziczenie jednopoziomowe umożliwia klasie pochodnej dziedziczenie cech z klasy z jednym rodzicem.
- Dziedziczenie wielopoziomowe: Dziedziczenie wielopoziomowe umożliwia klasie pochodnej dziedziczenie właściwości od bezpośredniej klasy nadrzędnej, która z kolei dziedziczy właściwości od swojej klasy nadrzędnej.
- Dziedziczenie hierarchiczne: Dziedziczenie na poziomie hierarchicznym umożliwia więcej niż jednej klasie pochodnej dziedziczenie właściwości z klasy nadrzędnej.
- Dziedziczenie wielokrotne: Dziedziczenie wielopoziomowe umożliwia jednej klasie pochodnej dziedziczenie właściwości z więcej niż jednej klasy bazowej.
Dziedziczenie w Pythonie
W powyższym artykule utworzyliśmy dwie klasy, tj. Person (klasa nadrzędna) i Pracownik (klasa podrzędna). Klasa Pracownik dziedziczy po klasie Osoba. Możemy użyć metod klasy osoby poprzez klasę pracownika, jak widać w funkcji wyświetlania w powyższym kodzie. Klasa potomna może również modyfikować zachowanie klasy nadrzędnej, co widać za pomocą metody szczegóły().
Python3 # Python code to demonstrate how parent constructors # are called. # parent class class Person(object): # __init__ is known as the constructor def __init__(self, name, idnumber): self.name = name self.idnumber = idnumber def display(self): print(self.name) print(self.idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) # child class class Employee(Person): def __init__(self, name, idnumber, salary, post): self.salary = salary self.post = post # invoking the __init__ of the parent class Person.__init__(self, name, idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) print('Post: {}'.format(self.post)) # creation of an object variable or an instance a = Employee('Rahul', 886012, 200000, 'Intern') # calling a function of the class Person using # its instance a.display() a.details()> Wyjście
Rahul 886012 My name is Rahul IdNumber: 886012 Post: Intern>
Notatka: Więcej informacji znajdziesz w naszym Dziedziczenie w Pythonie instruktaż.
Polimorfizm Pythona
W obiektowym programowaniu w Pythonie polimorfizm oznacza po prostu posiadanie wielu form. Musimy na przykład ustalić, czy dany gatunek ptaków lata, czy nie, wykorzystując polimorfizm, możemy to zrobić za pomocą jednej funkcji.
Polimorfizm w Pythonie
Ten kod demonstruje koncepcję dziedziczenia oops i przesłaniania metod w klasach Pythona. Pokazuje, jak podklasy mogą przesłaniać metody zdefiniowane w klasie nadrzędnej, aby zapewnić określone zachowanie, jednocześnie dziedzicząc inne metody z klasy nadrzędnej.
Python3 class Bird: def intro(self): print('There are many types of birds.') def flight(self): print('Most of the birds can fly but some cannot.') class sparrow(Bird): def flight(self): print('Sparrows can fly.') class ostrich(Bird): def flight(self): print('Ostriches cannot fly.') obj_bird = Bird() obj_spr = sparrow() obj_ost = ostrich() obj_bird.intro() obj_bird.flight() obj_spr.intro() obj_spr.flight() obj_ost.intro() obj_ost.flight()> Wyjście
There are many types of birds. Most of the birds can fly but some cannot. There are many types of birds. Sparrows can fly. There are many types of birds. Ostriches cannot fly.>
Notatka: Więcej informacji znajdziesz w naszym Polimorfizm w Pythonie Instruktaż.
Java na przerwę
Enkapsulacja Pythona
W programowaniu obiektowym w języku Python enkapsulacja jest jedną z podstawowych koncepcji programowania obiektowego (OOP). Opisuje ideę owijania danych oraz metody pracy na danych w ramach jednej jednostki. Nakłada to ograniczenia na bezpośredni dostęp do zmiennych i metod i może zapobiec przypadkowej modyfikacji danych. Aby zapobiec przypadkowym zmianom, zmienną obiektu można zmienić wyłącznie za pomocą metody obiektu. Tego typu zmienne nazywane są zmiennymi prywatnymi.
Klasa jest przykładem enkapsulacji, ponieważ hermetyzuje wszystkie dane, które są funkcjami składowymi, zmiennymi itp.

Enkapsulacja w Pythonie
W powyższym przykładzie utworzyliśmy zmienną c jako atrybut prywatny. Nie możemy nawet uzyskać bezpośredniego dostępu do tego atrybutu i nie możemy nawet zmienić jego wartości.
Python3 # Python program to # demonstrate private members # '__' double underscore represents private attribute. # Private attributes start with '__'. # Creating a Base class class Base: def __init__(self): self.a = 'techcodeview.com' self.__c = 'techcodeview.com' # Creating a derived class class Derived(Base): def __init__(self): # Calling constructor of # Base class Base.__init__(self) print('Calling private member of base class: ') print(self.__c) # Driver code obj1 = Base() print(obj1.a) # Uncommenting print(obj1.c) will # raise an AttributeError # Uncommenting obj2 = Derived() will # also raise an AtrributeError as # private member of base class # is called inside derived class> Wyjście
techcodeview.com>
Notatka: więcej informacji znajdziesz w naszym Enkapsulacja w Pythonie Instruktaż.
normalizacja rdbms
Abstrakcja danych
Ukrywa niepotrzebne szczegóły kodu przed użytkownikiem. Również wtedy, gdy nie chcemy ujawniać wrażliwych części naszej implementacji kodu i wtedy pojawia się abstrakcja danych.
Abstrakcję danych w Pythonie można osiągnąć tworząc klasy abstrakcyjne.
Programowanie obiektowe w Pythonie | Zestaw 2 (ukrywanie danych i drukowanie obiektów)