Klasy i obiekty Pythona [z przykładami]
Opublikowany: 2021-06-25OOP – 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.
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. 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. Podobnie jak w przypadku innych języków programowania obiektowego, klasa w Pythonie ma również trzy modyfikatory dostępu:Czym są klasy i obiekty w Pythonie?
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?
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?
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.