Czym jest programowanie obiektowe?
Już korzystałeś z obiektów przez wiele rozdziałów — po prostu jeszcze ich tak nie nazywałeś.
Obiekt — to, co już jest znane, ale z nową nazwą
Przyjrzyj się kodowi z poprzednich rozdziałów: artist.forward(100),
"Python".upper(), [1,2,3].append(4)
— we wszystkich trzech mamy jakiś rodzaj cel (żółw, łańcuch znaków, lista) oraz
Komendę, którą wywołujemy z nim przez punkt. Przez cały ten czas już pracowałeś z przedmiotami
"Ta sekcja daje znanej idei dokładną nazwę.
Każdy obiekt w Python ma dwie strony:
| Strona obiektowa | Przykład w artist (żółwie) |
|---|---|
| Status są dane, które obiekt obecnie przechowuje | aktualnych współrzędnych, koloru, kierunku |
| Zachowanie — działania, które obiekt może wykonać | forward(), right(), color() |
Programowanie obiektowe (OOP) to sposób organizacji kodu wokół Takie obiekty: dane i działania z nimi związane żyją razem, oraz nie są rozproszone między pojedynczymi zmiennymi i funkcjami.
Typ obiektu: type()
Każdy obiekt w Python ma typ, który może być rozpoznawany przez wbudowaną funkcję
type()już znasz:
artist = __import__("turtle").Turtle()
print(type(artist)) # <class 'turtle.Turtle'>
print(type("Python")) # <class 'str'>
print(type([1, 2, 3])) # <class 'list'>
Word class w każdej odpowiedzi — nie przypadek. Typ obiektu — to właśnie on klasa.
Udowodnijmy to!
Już korzystałeś z obiektów od samego rozdziału 6, nawet nie nazywając ich tak:
import turtle
artist = turtle.Turtle() #artist jest obiektem klasowym Turtle
artist.forward(100) # forward() jest działaniem (metodą) tego obiektu
artist.color("red") # obiekt ma również własny stan — na przykład kolor
turtle.Turtle jest klasa: rysunek, szablon,
opisujące, jakie są żółwie i co potrafią. Każde wyzwanie
turtle.Turtle() tworzy nową, niezależną
cel (nazywane także „instancją klasy”
turtle.Turtle sam nie ma pozycji na ekranie — tylko KAŻDY utworzony obiekt ma swoją pozycję turtle.Turtle() osobno. Klasa to opis tego, czym będą obiekty, a nie sam obiekt.