Programowanie obiektowe:
obiekt a klasa
klasa: cechy, metody
obiekt: wartości cech
dziedziczenie
zwierzę
pies kot mysz
duza_rasa mala_rasa itp itd...
Pierwsza klasa
Dziedziczenie:
kolejność szukania atrybutów:
szuka w obiekcie,
następnie we wszystkich klasach powyżej niego,
od lewej do prawej w przypadku dziedziczenia wilokrotnego.
Wielodziedziczenie - kolejność
karcianka
potasowane
karcianka: karcianka
potasowane
super a wywołanie metody konkretnej klasy
super
Munchkin
potasowane
rozdane
pograne
metoda klasy
Munchkin
potasowane
pograne
rozdane
pograne
Dziedziczenie z object
class Game(object): #new style
pass
class Game: #old style
pass
Python 3 only has new-style classes. No matter if you subclass from object or not, classes are new-style in Python 3. It is however recommended that you still subclass from object.
Important behavior changes between old and new style classes:
super added
MRO changed
descriptors added
new style class objects cannot be raised unless derived from Exception
__slots__ added
@staticmethod and @classmethod
classmethod must have a reference to a class object as the first parameter, whereas staticmethod can have no parameters at all.
pograne w gra1
pograne w gra1 dla 2
Napisz klasę Człowiek. Każdy człowiek ma nadawane imię i rok urodzenia. Każdy człowiek umie się przedstawić, tzn. Wyświetlić swoje imię oraz podać swój wiek (wyliczony na podstawie roku urodzenia i aktualnej daty)
Ludzi możemy podzielić na kobiety i mężczyzn. Kobiety podczas podawania swojego wieku odejmują sobie 2 lata. Mężczyźni natomiast mają problem z liczeniem i za każdym razem mylą się o +/- 3 lata (losowo).
Napisz klasę rodzic. Każdy rodzic ma nadawany stopień odpowiedzialności od 0-5. Gdy podczas tworzenia obiektu rodzic nie podamy odpowiedzialności nadawana jest wartość 2. Rodzic podany o odpowiedzialność odpowiada zgodnie z prawdą.
Każda matka jest zarówno kobietą jak i rodzicem. Przedstawia się mówiąc „Jestem /imię/ i jestem mamą”. Pytana o wiek odpowiada ile lat ma jej dziecko, które urodziła w wieku 20 lat (wykorzystaj funkcję z klasy człowiek do obliczania wieku, a nie z klasy kobieta!), jeżeli nie ma 20 lat odpowiada jak kobieta.
Każdy ojciec jest zarówno mężczyzną jak i rodzicem. Pytany o odpowiedzialność zawyża ją o 1 (nawet jeżeli wychodzi poza skalę!).