Klasy i obiekty


Obiety są połączeniem zmiennych i funkcji w jedną strukturalną całość. Obiekty biorą swoje zmienne i funkcje z klas. Klasy są podstawowym schematem, według których tworzone są obiekty.

Poniżej znajduje się bardzo prosty przykład klasy:

 class MojaKlasa:
      zmienna = "blah"
      def funkcja(self):
           print "To jest wiadomość wewnątrz klasy."

Nieco później wyjaśnimy, dlaczego powinieneś dołączać "self" jako parametr. Aby stworzyć obiekt będący realizacją klasy trzeba wystarczy przypisać nazwie zmiennej wartość wyrażenia nazwa_klasy().

class MojaKlasa:
    zmienna = "blah"

mojobiekt = MojaKlasa()

Teraz zmienna "mojobiekt" przechowuje obiekt klasy MojaKlasa, który zawiera zmienne i funkcje, które zostały zdefiniowane w środku klasy MojaKlasa.

Dostęp do zmiennych w obiektach

Aby dostać się do zmiennej wewnątrz nowo utworzonego obiektu MojaKlasa należy to zrobić tak:

mojobiekt.zmienna

Tak więc na przykład możesz wypisać napis "ple": class MojaKlasa: zmienna = "blah"

mojobiekt = MojaKlasa()
mojobiekt.zmienna = "ple"
print mojobiekt.zmienna

Możesz wielokrotnie tworzyć obiekty należące do tej samej klasy (mające te same zdefiniowane zmienne i funkcje). Jednakże, każdy obiekt zawiera niezależną kopię zmiennej zdefiniowane w klasie. Na przykład jeśli zdefiniujemy inny obiekt klasy MojaKlasa i zmienimy wspomnianą wyżej zmienną:

class MojaKlasa:
    zmienna = "blah"

mojobiekt = MojaKlasa()
mojobiekt.zmienna = "ple"
mojobiekt2 = MojaKlasa()
 mojobiekt2.zmienna = "ploteczka"

print mojobiekt.zmienna # ple
print mojobiekt2.zmienna # ploteczka

Dostęp do funkcji obiektu

Aby dostać się do funkcji wewnątrz obiektu, należy użyć podobnej notacji jak w przypadku zmiennych:

nazwa_obiektu.nazwa_funkcji()

Ćwiczenie

Mamy klasę zdefiniowaną dla pojazdów – Pojazd. Stwórz dwa nowe obiekty tej klasy: Auto1 i Auto2. Auto1 powinno mieć kolor "czerwony", rodzaj "kabriolet", wartość 60000 i nazwę "Ferrari". Auto2 powinien mieć kolor "niebieski", rodzaj "autobus", wartość 10000 i nazwę "Ikarus".


Copyright © learnpython.org. Read our Terms of Use and Privacy Policy