Koncepcja programowania obiektowego w Pythonie
Opublikowany: 2020-12-01Zorientowany obiektowo to paradygmat programowania, który podąża za koncepcją klas i obiektów zamiast funkcji i logiki. Jest również znany jako wymyślny sposób kodowania, który organizuje kod w sposób, który zwiększa czytelność kodu i łatwość konserwacji. Koncepcja OOP jest ważnym tematem w programowaniu i pomaga budować moduły wielokrotnego użytku do różnych zadań w Data Science.
Jest to często warunek wstępny podczas budowania modeli uczenia głębokiego przy użyciu różnych bibliotek, takich jak Pytorch, gdzie model podstawowy jest ponownie używany do dodawania niestandardowych warstw. Przyjrzyjmy się, czego uczy ta koncepcja i jak ją zastosować w praktycznych przypadkach użycia.
Spis treści
Jaka jest koncepcja OOP?
Rozważ smartfon, który może być dowolnej marki, ale mają one wiele wspólnych cech. Wszystkie mają ekrany, głośniki, przyciski i na poziomie oprogramowania, prawie wszystkie są zasilane z systemu Android. Rozważmy teraz przypadek, w którym każda firma tworzy swoje oprogramowanie od podstaw, nawet jądro, które kontroluje większość komponentów sprzętowych.
Byłoby to żmudnym i kosztownym procesem, a więc podniesieniem ceny urządzeń. Co się stanie, jeśli istnieje abstrakcyjny lub uogólniony model, który z czasem może zostać zmieniony przez dowolnego producenta zgodnie z jego wymaganiami? Ta koncepcja próbuje uchwycić tę metodę opartą na klasach, w której kod jest ustrukturyzowany w klasy z różnymi metodami akcesora.
Czym są klasy i obiekty?
Klasy to schematy tego, co należy wdrożyć. Jeśli weźmiemy pod uwagę nasz poprzedni przykład, możemy mieć funkcje do dzwonienia do osoby, odbierania połączeń, wiadomości, odtwarzania muzyki lub robienia innych rzeczy.
Wszystkie te rzeczy są wspólne dla każdego smartfona, ich wewnętrzne działanie również jest podobne i można je uznać za klasę funkcji smartfona lub klasę. Obiekty można zdefiniować jako wszystkie marki smartfonów, które będą wykorzystywać tę wspólną implementację w swoich produktach z modyfikacjami.
Może istnieć wiele instancji tej klasy bazowej, a każda instancja może przechowywać inny stan wartości bez ingerencji w inne obiekty. W Pythonie klasę można zadeklarować za pomocą zastrzeżonego słowa kluczowego class. Ponadto konstruktor __init__ służy do inicjalizacji zmiennych klasy.
klasa Firma:
def __init__ (samo):
self.name = 'upGrad'
def nazwa_wyświetlana (własna):
print(f”Nazwa firmy to: {self.name}”)
cm = Firma()
cm.nazwa_wyświetlana()
Przeczytaj także: Wynagrodzenie programisty Pythona w Indiach
Różne filary OOP
Teraz, gdy znamy już podstawowe elementy składowe tego paradygmatu, przyjrzyjmy się niektórym z najważniejszych cech/charakterystyki tego pojęcia:
Kapsułkowanie
Oznacza to, że metody (lub funkcje) klasy i powiązane z nią dane są hermetyzowane lub chronione przed przypadkowym lub zewnętrznym dostępem. Oznacza to, że atrybuty zdefiniowane w zakresie prywatnym lub chronionym nie są dostępne poza klasą.
W Pythonie istnieje obawa, że nie istnieje pojęcie zmiennych prywatnych w tym języku, więc atrybuty są dostępne poza klasą.
Istnieje sposób na rozpoznanie atrybutów prywatnych za pomocą podwójnego podkreślenia na początku deklaracji i jeśli spróbujesz uzyskać dostęp do tego poza klasą za pośrednictwem tego samego obiektu, zostaniesz poproszony o AttributeError, ponieważ Python stosuje zniekształcanie nazw za każdym razem, gdy wykryje zmienna prywatna. Nie zapewnia to żadnego bezpieczeństwa Twoim atrybutom, ponieważ są one nadal dostępne.
Dziedzictwo
Jak sugeruje to słowo, jest to przeniesienie części istniejącej klasy zwanej klasą nadrzędną do nowej klasy zwanej klasą potomną z niewielkimi zmianami lub bez zmian. Możemy połączyć to z naszym przykładem w ten sposób, że wszystkie marki smartfonów dziedziczą ogólną klasę telefonu, która pomoże im wykonywać podstawowe funkcje, a ponadto mogą dodawać dodatkowe kody, aby poprawić wrażenia użytkownika zgodnie z ich potrzebami. W Pythonie dziedziczenie klasy odbywa się przez:
klasa A:
trochę treści
klasa B(A):
zawartość klasy pochodnej
Istnieje inna koncepcja związana z dziedziczeniem, nazywana nadpisywaniem funkcji. Załóżmy, że funkcja aparatu w standardowym smartfonie nie jest tak dobra, a producent ma na to lepsze rozwiązanie. Mogą bezpośrednio przesłonić tę funkcję, definiując ją ponownie w klasie potomnej i zastosować tam zmiany.

Abstrakcja
Definiuje plan lub interfejs do implementacji podklas. Oznacza to, że niektóre metody są zdefiniowane w klasie bazowej, która nie jest w pełni zaimplementowana i zdefiniowany jest tylko widok abstrakcyjny. Może pomóc w śledzeniu różnych funkcji modułu i podmodułów, które mają zostać utworzone.
Na przykład niektóre smartfony obsługują NFC (połączenia bliskiego zasięgu), a tę funkcjonalność można zdefiniować w klasie bazowej, a jej implementację można zakodować w klasie potomnej telefonu wynikowego. W ten sposób abstrakcyjna klasa bazowa może zapewnić ogólny widok modułu i kolejnych implementacji. Oto przykład:
klasa Telefon:
def kamera (własna):
podawać
def NFC(własne):
podawać
klasa Xyz(Telefon):
def NFC(własne):
zwróć Prawda
Dowiedz się więcej o: Najlepsze narzędzia Pythona
Wielopostaciowość
Jeśli pójdziemy za znaczeniem źródłowym, oznacza to wiele form tej samej rzeczy. Polimorfizm definiuje funkcje na podstawie liczby lub typów przekazywanych argumentów. Na przykład funkcja length w Pythonie może przyjmować dowolny typ iterowalności lub obiektu i zwraca długość całkowitą.
Można to również zacytować jako przeciążenie funkcji, ale tutaj jest haczyk w języku Python. Nie możemy zdefiniować funkcji o tej samej nazwie z różnymi argumentami, a jeśli to zrobimy, to uwzględnia tylko ostatni wpis.
Praktyczne przypadki użycia OOP
Widzieliśmy, na czym polega ta koncepcja i jakie funkcje oferuje. Spójrz na kilka przykładów, w których możesz zastosować tę koncepcję:
Szablony Jinja: Jeśli masz jakieś doświadczenie z frameworkiem Flask Pythona, który obsługuje trasy i po stronie serwera, to szablonowanie pomaga w obsłudze tych danych w interfejsie użytkownika. Zasadniczo tworzony jest podstawowy plik HTML, który jest następnie dziedziczony przez wszystkie strony, aby mieć ten sam układ w całej witrynie.
Kivy Applications: Jest to biblioteka, która pozwala na budowanie wieloplatformowych (Android i IOS) aplikacji Pythona opartych na graficznym interfejsie użytkownika, a tutaj większość programowania opiera się na koncepcji OOP.
ORM: Mapery obiektowo-relacyjne oferują sposób definiowania relacyjnych baz danych w kodzie aplikacji przy użyciu dowolnego języka. Na przykład w Django możesz definiować różne typy modeli, używając klas dla różnych typów użytkowników.
Wniosek
W tym artykule omówiliśmy, czym jest koncepcja OOP, jej elementy składowe (klasy i obiekty), różne filary, i podkreśliliśmy kilka przykładów, w których przyjęto ten paradygmat. Jest wiele miejsc, w których ta metoda programowania jest rozważana ze względu na lepsze zarządzanie kodem, współpracę i dostarczanie abstrakcyjnych funkcjonalności innym programom od tego uzależnionym.
Jeśli chcesz dowiedzieć się czegoś o Pythonie, nauce o danych, sprawdź dyplom PG IIIT-B i upGrad w dziedzinie Data Science, który jest stworzony dla pracujących profesjonalistów i oferuje ponad 10 studiów przypadków i projektów, praktyczne warsztaty praktyczne, mentoring z ekspertami z branży, Indywidualnie z mentorami branżowymi, ponad 400 godzin nauki i pomocy w pracy z najlepszymi firmami.
Co to jest OOP?
Programowanie obiektowe, w skrócie OOP, to technika programowania komputerowego, która organizuje projekty oprogramowania według danych, zamiast organizować je według funkcji i logiki. OOP koncentruje się na obiektach, tj. polach danych o odrębnych właściwościach i zachowaniu, które programiści chcą kontrolować, a nie na logice niezbędnej do zarządzania nimi. Ta metoda programowania jest idealna dla dużych, skomplikowanych aplikacji, które są stale aktualizowane lub konserwowane. OOP obejmuje inicjatywy związane z produkcją, projektowaniem i aplikacjami mobilnymi. Inne zalety tego języka to możliwość ponownego wykorzystania kodu, skalowalność i wydajność.
Jakie są różne języki w OOP?
Języki programowania obiektowego stanowią kilka najczęściej używanych języków kodowania w dzisiejszym przemyśle komputerowym. Języki OOP można znaleźć wszędzie. Języki te wykorzystują obiekty, które przechowują zarówno dane, jak i kod. Enkapsulacja, abstrakcja, polimorfizm i dziedziczenie to idee programowania obiektowego. Popularne języki programowania obiektowego to Java, Python, C++, Lisp i Perl. Pomagają w programowaniu z wykorzystaniem paradygmatu klas i obiektów. Inne języki obsługujące zasady zorientowane obiektowo to Perl, Objective-C, Dart, Lisp, JavaScript i PHP.
Dlaczego preferowane są obiekty OOP?
Istnieje wiele powodów, dla których preferowane są obiekty OOP. Deweloperzy mogą ponownie używać kodu obiektowego. Dziedziczenia można również użyć do powielenia informacji i funkcji, które zostały wcześniej utworzone. Oszczędza to czas, upraszcza kod, oszczędza miejsce i sprawia, że kodowanie jest łatwiejsze dla naszych palców. Ponieważ większość kodu znajduje się w jednym miejscu i jest wywoływana i ponownie używana, jego utrzymanie jest znacznie łatwiejsze. Podczas gdy większość języków oferuje pewien poziom bezpieczeństwa, języki zorientowane obiektowo są wygodniejsze, ponieważ enkapsulacja obejmuje bezpieczeństwo. Języki programowania obiektowego dzielą program na obiekty i klasy. Jest to korzystne, ponieważ zapewnia aplikacji bardziej modułową strukturę.