Klasy i obiekty Pythona [z przykładami]

Opublikowany: 2021-06-25

OOP – skrót od Object-Oriented Programming – to paradygmat, który opiera się na obiektach i klasach do tworzenia programów funkcjonalnych. Programy OOP działają na modułowości kodu, a klasy i obiekty pomagają w pisaniu prostych fragmentów kodu, które można wykorzystać do tworzenia większych funkcji i modułów oprogramowania. C++, Java i Python to trzy najczęściej używane języki programowania obiektowego. Jednak jeśli chodzi o dzisiejsze przypadki użycia – takie jak Data Science i Statistical Analysis – Python przebija dwa pozostałe.

Nie jest to niespodzianką, ponieważ naukowcy zajmujący się danymi na całym świecie przysięgają na możliwości języka programowania Python. Jeśli planujesz rozpocząć karierę w Data Science i chcesz opanować Pythona – znajomość klas i obiektów powinna być Twoim priorytetem.

W tym artykule pomożemy Ci zrozumieć wszystkie niuanse kryjące się za obiektami i klasami w Pythonie, a także jak zacząć tworzyć własne klasy i pracować z nimi.

Spis treści

Klasy w Pythonie

Klasa w Pythonie to zdefiniowany przez użytkownika prototyp, za pomocą którego tworzone są obiekty. Mówiąc prościej, klasa to metoda łączenia danych i funkcji razem. Te dwa słowa kluczowe są ważne do zapamiętania. Dane oznaczają dowolne zmienne utworzone lub zdefiniowane, podczas gdy funkcjonalność oznacza dowolną operację, którą można wykonać na tych danych. Razem z danymi i funkcjonalnością spakowaną w jeden pakiet otrzymujemy klasy.

Aby zrozumieć potrzebę tworzenia klasy, rozważ poniższy prosty przykład. Załóżmy, że chcesz śledzić koty w Twojej okolicy, które mają różne cechy, takie jak wiek, rasa, kolor, waga itp. Możesz użyć listy i śledzić elementy w sposób 1:1, tj. możesz śledzić rasę do wiek lub wiek do wagi za pomocą listy. A jeśli ma być 100 różnych kotów? A jeśli do dodania będzie więcej nieruchomości? W takim scenariuszu korzystanie z list jest zwykle niezorganizowane i niechlujne.

Właśnie tam przychodzą zajęcia!

Klasy pomagają w tworzeniu struktury danych zdefiniowanej przez użytkownika, która ma własne składowe danych (zmienne) i funkcje składowe. Dostęp do tych zmiennych i metod można uzyskać po prostu tworząc obiekt dla klasy (omówimy to później). W pewnym sensie klasy są więc jak plan obiektu.

Co więcej, tworzenie klas automatycznie tworzy nowy typ obiektów – co pozwala na dalsze tworzenie większej liczby obiektów tego samego typu. Każda instancja klasy może mieć dołączone atrybuty w celu utrzymania jej stanu. Wystąpienia klas mogą same mieć metody (zgodnie z definicją ich klasy) do modyfikowania stanu.

Kilka punktów na temat klasy Pythona:

  • Klasy są tworzone przy użyciu słowa kluczowego class.
  • Atrybuty to zmienne specyficzne dla utworzonej klasy.
  • Te atrybuty mają zawsze charakter publiczny i można do nich uzyskać dostęp za pomocą operatora kropki po nazwie klasy. Na przykład ClassName.AttributeName pobierze konkretne szczegóły atrybutu tej konkretnej klasy.

Składnia do definiowania klasy:

klasa Nazwa Klasy:

# Oświadczenie-1

.

.

.

# Oświadczenie-N

Na przykład:

klasa kota:

podawać

W powyższym przykładzie słowo kluczowe class wskazuje, że tworzysz klasę, po której następuje nazwa klasy (w tym przypadku Cat). Rola tej klasy nie została jeszcze określona.

Zalety używania klas w Pythonie

  • Zajęcia pomagają utrzymać wszystkie rodzaje danych w odpowiedniej organizacji w jednym miejscu. W ten sposób zachowujesz czystość i modułowość kodu, poprawiając czytelność kodu.
  • Korzystanie z klas pozwala na skorzystanie z innego paradygmatu OOP – zwanego Dziedziczeniem. Dzieje się tak, gdy klasa dziedziczy właściwości innej klasy.
  • Klasy pozwalają na zastąpienie dowolnych standardowych operatorów.
  • Klasy umożliwiają ponowne użycie kodu, co sprawia, że ​​Twój program jest o wiele bardziej wydajny.

Obiekty w Pythonie

Obiekt to po prostu instancja dowolnej zdefiniowanej klasy. W momencie tworzenia klasy, automatyczna instancja jest już stworzona. Tak więc, jak w przykładzie, klasa Kot automatycznie tworzy instancję obiektu, takiego jak rzeczywisty kot – rasy perskiej w wieku 3 lat. Możesz mieć wiele różnych przypadków kotów o różnych właściwościach, ale aby miało to sens – będziesz potrzebować klasy jako przewodnika. W przeciwnym razie poczujesz się zagubiony, nie wiedząc, jakie informacje są potrzebne.

Obiekt charakteryzuje się ogólnie trzema rzeczami:

  • Stan: Odnosi się do różnych atrybutów dowolnego obiektu i różnych właściwości, które może on pokazać.
  • Zachowanie: To zasadniczo oznacza metody tego obiektu. Odzwierciedla również sposób, w jaki ten konkretny obiekt wchodzi w interakcję z innymi obiektami lub na nie reaguje.
  • Tożsamość: Tożsamość to unikalna nazwa obiektu, za pomocą której można ją wywołać w razie potrzeby.

1. Deklarowanie obiektów

Deklarowanie obiektów jest również znane jako tworzenie instancji klasy, ponieważ gdy tylko zdefiniujesz klasę, tworzony jest sam obiekt domyślny (jak widzieliśmy wcześniej) — który jest instancją tej klasy. Podobnie, za każdym razem, gdy tworzysz obiekt, zasadniczo tworzysz nową instancję swojej klasy.

Jeśli chodzi o te trzy rzeczy (stan, zachowanie, tożsamość), o których wspomnieliśmy wcześniej, wszystkie instancje (obiekty) mają wspólne zachowanie i stan, ale ich tożsamości są różne. Jedna klasa może mieć dowolną liczbę obiektów, zgodnie z wymaganiami programisty.

Sprawdź poniższy przykład. Oto program, który wyjaśnia, jak tworzyć instancje klas.

klasa kota:

# Prosta klasa

# atrybut

attr1 = „koci”

atr2 = „kot”

# Przykładowa metoda

def zabawa (własna):

print("Jestem", self.attr1)

print("Jestem", self.attr2)

# Kod kierowcy

# Instancja obiektu

Tomek = kot()

# Dostęp do atrybutów klasy

# i metoda przez obiekty

print(Tom.atr1)

Tom.zabawa();

Wynik działania tego prostego programu będzie następujący:

Koci

jestem kotem

jestem kotem

Jak widać, najpierw utworzyliśmy klasę o nazwie cat, a następnie utworzyliśmy instancję obiektu o nazwie „Tom”. Otrzymaliśmy trzy wyniki:

  • Feline – taki był wynik oświadczenia print(Tom.attr1). Ponieważ Tom jest obiektem klasy Cat, a attr1 został ustawiony jako Feline, ta funkcja zwraca wynik Feline.
  • Jestem kotem – Tom.fun(); używa obiektu o nazwie Tom do wywołania funkcji w klasie cat, znanej jako „zabawa”. Obiekt Tom niesie ze sobą atrybuty funkcji, dlatego funkcja wypisuje następujące dwa zdania – „Jestem kotem”.
  • Jestem kotem – z tego samego powodu, co powyżej.

Teraz, gdy już wiesz, jak działają klasy i obiekty w Pythonie, przyjrzyjmy się kilku podstawowym metodom.

2. Metoda jaźni

Wszystkie metody zdefiniowane w dowolnej klasie muszą mieć dodatkowy pierwszy parametr w definicji funkcji. Programista nie przypisuje temu parametrowi żadnej wartości. Jednak gdy metoda jest wywoływana, Python dostarcza jej wartość.

W rezultacie, jeśli zdefiniujesz funkcję bez argumentów, technicznie nadal ma ona jeden argument. W Pythonie nazywa się to „self”. Aby lepiej to zrozumieć, możesz zrewidować swoje koncepcje wskaźników w C++ lub odwołać się do nich w Javie. Metoda self działa zasadniczo w ten sam sposób.

Aby to lepiej zrozumieć – kiedy wywołamy dowolną metodę obiektu, na przykład:

myObject.myMethod(arg1, arg2), Python automatycznie konwertuje go na myClass.myMethod(myObject, arg1, arg2).

Widzisz, sam obiekt staje się pierwszym argumentem metody. O to właśnie chodzi w jaźni w Pythonie.

3. Metoda __init__

Ta metoda jest podobna do konstruktorów w Javie lub C++. Podobnie jak konstruktory, metoda init służy do inicjowania stanu obiektu. Zawiera zbiór instrukcji (instrukcji), które są wykonywane w momencie tworzenia obiektu. Gdy obiekt jest tworzony dla klasy, metoda init automatycznie uruchomi metody zainicjowane przez Ciebie.

Oto fragment kodu, aby lepiej to wyjaśnić:

# Przykładowa klasa z metodą init

klasa Osoba:

# inicjująca metoda lub konstruktor

def __init__(self, name):

self.name = imię

# Metoda próbki

def powiedz_hi(self):

print('Cześć, nazywam się', self.name)

p = Osoba("Sam")

p.powiedz_cześć()

Wyjście:

Witam, nazywam się Sam

Ucz się online kursów analizy danych z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Zmienne klas i instancji

Zmienne instancji są unikalne dla każdej instancji, podczas gdy zmienne klas dotyczą metod i atrybutów wspólnych dla wszystkich instancji klasy. W konsekwencji zmienne instancji są w zasadzie zmiennymi, których wartość jest przypisana wewnątrz konstruktora lub metody z self. Z drugiej strony, zmienne klasowe to te, których wartości są przypisane w ramach klasy.

Przejdź przez poniższy kod, aby zrozumieć, jak zmienne instancji są definiowane za pomocą konstruktora (metoda init):

klasa kota:

# Zmienna klasy

zwierzę = 'kot'

# Metoda inicjująca lub konstruktor

def __init__(self, rasa, kolor):

# Zmienna instancji

własny.rasa = rasa

self.kolor = kolor

# Obiekty klasy Dog

Tom = kot("perski", "czarny")

Śnieżny = kot("Indie", "biały")

print("Szczegóły Tomka:')

print('Tomek jest', Tom.animal)

print('Rasa: ', Tom.rasa)

print('Kolor: ', Tom.kolor)

print('\nSzczegóły śniegu:')

print("Snowy to', Snowy.animal)

print('Rasa: ', Snowy.breed)

print('Kolor: ', Śnieżny.kolor)

Jeśli zastosujesz się do powyższego kodu linia po linii, oto dane wyjściowe, które otrzymasz:

Wyjście:

Szczegóły Toma:

Tom jest kotem

Rasa: perska

Kolor czarny

Śnieżne szczegóły:

Snowy to kot

Rasa: Indie

Kolor biały

Na zakończenie

Python jest stosunkowo łatwiejszym językiem programowania, szczególnie dla początkujących. Po opanowaniu podstaw będziesz gotowy do pracy z różnymi bibliotekami Pythona i rozwiązywania problemów związanych z danymi. Pamiętaj jednak, że choć podróż zaczyna się od zrozumienia klas i obiektów, musisz także nauczyć się pracować z różnymi obiektami, klasami i ich niuansami.

Mamy nadzieję, że ten artykuł pomógł wyjaśnić Twoje wątpliwości dotyczące klas i obiektów w Pythonie. Jeśli masz jakieś pytania, napisz do nas komentarz poniżej – wkrótce skontaktujemy się z Tobą!

Jeśli szukasz zmiany w karierze i szukasz profesjonalnej pomocy – upGrad jest dla Ciebie. Sprawdź nasz program Executive PG w Data Science oferowany we współpracy z IIIT-B . Zapoznaj się z ponad 14 językami programowania i narzędziami (w tym Python), a także uzyskaj dostęp do ponad 30 projektów istotnych dla branży. Studenci z dowolnego strumienia mogą zapisać się do tego programu, pod warunkiem, że zdobyli co najmniej 50% na licencjacie.

Mamy solidną bazę uczących się w ponad 85 krajach, ponad 40 000 płatnych uczniów na całym świecie i ponad 500 000 zadowolonych, pracujących profesjonalistów. Nasza 360-stopniowa pomoc w karierze, w połączeniu z ekspozycją studiów i burzy mózgów z globalnymi studentami, pozwala w pełni wykorzystać doświadczenie edukacyjne.

Czym są klasy i obiekty w Pythonie?

Klasa to szablon lub plan, który wiąże właściwości i funkcje jednostki. W Pythonie słowo kluczowe class służy do definiowania klasy. Wszystkie jednostki lub obiekty mające podobne atrybuty można umieścić w jednej klasie i można do nich uzyskać dostęp za pomocą funkcji członkowskich.
Obiekt jest instancją klasy. Po utworzeniu klasy obiekty otrzymują wszystkie informacje o tej klasie. To jak kopia szanowanej klasy z rzeczywistymi wartościami. Obiekt jest klasyfikowany według trzech czynników:
a. Stan
b. Zachowanie
C. Tożsamość

Jakim paradygmatem programowania kieruje się Python?

Istnieją cztery główne, rozróżnialne paradygmaty, po których następują: zorientowany obiektowo, proceduralny, funkcjonalny i imperatywny w Pythonie. Python silnie wspiera koncepcje zorientowane obiektowo; nie jest to jednak język programowania zorientowany wyłącznie na obiekt.
Powodem wspierania różnych paradygmatów programowania jest zauważalny wpływ niektórych skryptów, takich jak CoffeeScript i języków programowania obiektowego, takich jak Ruby. Łączy się również z językami takimi jak R, aby zwiększyć wydajność i moc obliczeniową.
Będąc językiem wieloparadygmatycznym, Python jest uważany za jeden z najbardziej wszechstronnych języków. Jest szeroko stosowany do programowania, analizy danych, skrobania stron internetowych i automatyzacji.

Czym są modyfikatory dostępu w Pythonie?

Podobnie jak w przypadku innych języków programowania obiektowego, klasa w Pythonie ma również trzy modyfikatory dostępu:
a. Modyfikator dostępu publicznego : do członków klasy określonych jako publiczne można uzyskać bezpośredni dostęp za pomocą dowolnej funkcji, tj. funkcji członkowskich, a także funkcji niebędących członkami. Jeśli nie określono specyfikatora dostępu, wszystkie elementy członkowskie klasy są domyślnie uznawane przez kompilator za publiczne elementy członkowskie.
b. Modyfikator dostępu prywatnego : ci członkowie klasy są ukryci przed innymi członkami klasy. Dostęp do nich mają tylko funkcje składowe klasy, w której są zdefiniowane.
C. Protected Access Modifier : do elementów członkowskich klasy, które są określone jako chronione, można uzyskać dostęp tylko za pomocą funkcji członkowskich tej samej klasy i zgłosi błąd, jeśli spróbujesz uzyskać dostęp poza klasą. Jedyną główną różnicą między specyfikatorem dostępu prywatnego i chronionego jest to, że chronione elementy członkowskie mogą być dziedziczone, podczas gdy elementy prywatne nie mogą być dziedziczone.