Zaawansowany kurs języka Python



Podobne dokumenty
Kurs rozszerzony języka Python

Środowisko programisty

Programowanie obiektowe

Wykład 4 Wybrane zagadnienia programowania w C++

Kompozycja i dziedziczenie klas

Ćwiczenie 5. Python 3: Programowanie obiektowe i dziedziczenie

Programowanie obiektowe

Wykład 2 Programowanie zorientowane obiektowo w Pythonie

Zaawansowany kurs języka Python

Architektura Systemów Komputerowych. Sterowanie programem skoki Przerwania

PowerShell. Sławomir Wawrzyniak

Funkcje składowe (metody)

Programowanie i projektowanie obiektowe

Wartości domyślne, szablony funkcji i klas

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Elementy cyfrowe i układy logiczne

Język Python (3) Język Python (3) 1/35

Zaawansowany kurs języka Python

Ćwiczenia IV - Kontenery (pojemniki)

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

Programowanie obiektowe

Wstęp do programowania

ASD - ćwiczenia III. Dowodzenie poprawności programów iteracyjnych. Nieformalnie o poprawności programów:

Wykład 4: Klasy i Metody

Obsługa pakietu biurowego OFFICE

Projektowanie i programowanie obiektowe (materiały do wykładu cz. VI)

Pisząc kod w Pythonie na pewno już nie raz coś poszło nie tak i Shell wypisał komunikat o błędzie podobny do poniższego:

Programowanie w języku Java

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

Rozdział 6. Pakowanie plecaka. 6.1 Postawienie problemu

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

CGI i serwlety. Plan wykładu. Wykład prowadzi Mikołaj Morzy. Przykład: serwlety vs. szablony. Implementacja logiki prezentacji

Uniwersytet Rzeszowski


INSTRUKCJA DO PROGRAMU LICZARKA 2000 v 2.56

Laboratorium Podstawy Przetwarzania Rozproszonego SPRAWOZDANIE z zadania SERWIS KOMPUTEROWY

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Struktura plików wejściowych kontrahenci krajowi i zagraniczni ipko biznes

Przykład implementacji przeciażeń operatorów problem kolizji

PL/SQL. Zaawansowane tematy PL/SQL

Algorytmy i Struktury Danych.

Metaprogramowanie w Ruby

SFML. (Simple and Fast Multimedia Library)

Stypendia USOS Stan na semestr zimowy 2013/14

Wyjątki. try - except

KURS GEOMETRIA ANALITYCZNA

Programowanie obiektowe

2. Składnia Pythona. Robert Janczewski. Gdańsk, 2014

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Odpowiedzi i schematy oceniania Arkusz 23 Zadania zamknięte. Wskazówki do rozwiązania. Iloczyn dwóch liczb ujemnych jest liczbą dodatnią, zatem

Automatyka. Etymologicznie automatyka pochodzi od grec.

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ ]

Program szkoleniowy Efektywni50+ Moduł III Standardy wymiany danych

Zaawansowany kurs języka Python

KASA EDUKACYJNA INSTRUKCJA. WARIANT I - dla dzieci młodszych

Zarządzanie kosztami w dziale utrzymania ruchu

Podstawy Informatyki Gramatyki formalne

Programowanie obiektowe

Charakterystyka systemów plików

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.

Programowanie Obiektowe i C++

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy


Matematyka z plusemdla szkoły ponadgimnazjalnej WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE TRZECIEJ LICEUM. KATEGORIA B Uczeń rozumie:

Programowanie obiektowe

Zagadnienia do egzaminu ustnego z matematyki dla Uzupełniającego Liceum Ogólnokształcącego dla Dorosłych - III semestr

Kurs z matematyki - zadania

INSTRUKCJA OBSŁUGI URZĄDZENIA: HC8201

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

PAKIET MathCad - Część III

Wykład 3 Typy danych w C++/CLI, typy fundamentalne, operacje wejścia/wyjścia, właściwości klasy (property) Zofia Kruczkiewicz

Programowanie obiektowe w C++ Wykład 11

Wiedza niepewna i wnioskowanie (c.d.)

Miejski System Zarządzania - Katowicka Infrastruktura Informacji Przestrzennej

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec

Zastosowanie metod statystycznych do problemu ujednoznaczniania struktury zdania w języku polskim

Paradygmaty programowania. Paradygmaty programowania

Kurs języka Python. Wykład 13. Marcin Młotkowski. 18 stycznia Rozszerzenia Pythona w C Python/C API. 2 Osadzanie Pythona w C

Polimorfizm, metody wirtualne i klasy abstrakcyjne

znaczeniu określa się zwykle graficzne kształtowanie tekstu za pomocą dostęp-

Stacjonarne Wszystkie Katedra Inżynierii Produkcji dr Sławomir Luściński. Kierunkowy Nieobowiązkowy Polski Semestr trzeci. Semestr zimowy Brak Tak

Temat: Funkcje. Własności ogólne. A n n a R a j f u r a, M a t e m a t y k a s e m e s t r 1, W S Z i M w S o c h a c z e w i e 1

Pętle w PERLU postać ogólna

Programowanie i projektowanie obiektowe

Ogólnopolska konferencja Świadectwa charakterystyki energetycznej dla budynków komunalnych. Oświetlenie publiczne. Kraków, 27 września 2010 r.

1. Korzyści z zakupu nowej wersji Poprawiono Zmiany w słowniku Stawki VAT Zmiana stawki VAT w kartotece Towary...

Microsoft Management Console

Programowanie w Ruby

Warunki Oferty PrOmOcyjnej usługi z ulgą

np. tu - na pierwszej formatce kreatora zaznaczamy opcję nr 3

Tworzenie modelu obiektowego

Programowanie obiektowe

EGZAMIN MATURALNY Z INFORMATYKI CZERWIEC 2011 POZIOM ROZSZERZONY WYBRANE: CZĘŚĆ I. Czas pracy: 90 minut. Liczba punktów do uzyskania: 20

Zaawansowane Aplikacje Internetowe

ECDL Advanced Moduł AM3 Przetwarzanie tekstu Syllabus, wersja 2.0

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba.

Transkrypt:

Wykład 2. 11 października 2013

Plan wykładu 1 Klasy i obiekty 2 3 4

Deklaracja klasy Przykłady class Figura: Pierwsza klasa def init (self, x, y): self.x = x self.y = y

Definicja metody class Figura, cd. definicji... def info(self): print(self.x, self.y) def zmien(self, x, y): self.x = x self.y = y

Tworzenie obiektów i wywołanie metod Przykład o = Figura(1, -1) o.info() o.zmien(2,3) o.info()

Dziedziczenie class Okrag(Figura): Okrag def init (self): self.x, self.y, self.r = 0, 0, 1 def info(self): print( x = %i, y = %i, r = %i % (self.x, self.y, self.r)) Wywołanie konstruktora z nadklasy def init (self): Figura. init (self)...

Metody wirtualne Class Figura def info(self):... def przesun(self, dx, dy): self.info() self.x, self.y = self.x + dx, self.y + dy self.info()

Metody wirtualne Class Figura def info(self):... def przesun(self, dx, dy): self.info() self.x, self.y = self.x + dx, self.y + dy self.info() okrag = Okrag(); okrag.przesun(10,15)

Wielodziedziczenie class Samochod: def naprzod(self): class Okret: def naprzod(self): class Amfibia(Samochod, Okret):

Wielodziedziczenie class Samochod: def naprzod(self): class Okret: def naprzod(self): class Amfibia(Samochod, Okret): Zagadka amf = Amfibia() amf.naprzod()

Rozwiązywanie konfliktów Pojazd + naprzod() Samochod Okret + naprzod() Amfibia Reguła W głąb, od lewej do prawej

Równość obiektów Operatory tożsamości obiektów is is not

Wartość None isinstanceof(none, NoneType)

Wartość None isinstanceof(none, NoneType) if x is not None:

Plan wykładu 1 Klasy i obiekty 2 3 4

Pola statyczne klasy class Okrag: pi = 3.1415 def init (self): self.r = 2.71 def pole(self): print( Pole okręgu = %i % (Okrag.pi * self.r **2 ))

Pola statyczne klasy class Okrag: pi = 3.1415 def init (self): self.r = 2.71 def pole(self): print( Pole okręgu = %i % (Okrag.pi * self.r **2 )) Odwołanie do pól statycznych klasy print(okrag.pi) o = Okrag() print(o.pi)

Pola obiektu class Okrag: pi = 3.1415 self.x, self.y = 0, 0 def init (self): self.x, self.y = 0, 0

Zmienne Klasy i obiekty Fakt 1. Zmienne można dodawać dynamicznie

Zmienne Klasy i obiekty Fakt 1. Zmienne można dodawać dynamicznie Nowa zmienna modułu modul.nowa zmienna = Nowa zmienna

Zmienne Klasy i obiekty Fakt 1. Zmienne można dodawać dynamicznie Nowa zmienna modułu modul.nowa zmienna = Nowa zmienna Nowa zmienna obiektu o = Figura() o.nowe pole = Nowe pole

Zmienne Klasy i obiekty Fakt 2. Zmienne można usuwać dynamicznie

Zmienne Klasy i obiekty Fakt 2. Zmienne można usuwać dynamicznie Przykład x = x del x

Zmienne prywatne Zmienną prywatną jest zmienna poprzedzona dwoma podkreśleniami i zakończona co najwyżej jednym podkreśleniem (dotyczy modułów i klas). Np. zmiennaprywatna

Plan wykładu 1 Klasy i obiekty 2 3 4

Klasy i obiekty Mechanizm przepływu sterowania

Klasy i obiekty Mechanizm przepływu sterowania to obiekty

Obsługa wyjątków try: f = open( plik [10] +.py, r ) except IOError: print( Błąd wejścia/wyjścia ) except IndexError as x: print(x) except: print( Nieznany wyjątek ) finally: f.close() # Dopiero od 2.5!

Obsługa wyjątków try: f = open( plik [10] +.py, r ) except IOError: print( Błąd wejścia/wyjścia ) except IndexError, x: print(x) except: print( Nieznany wyjątek ) finally: f.close() # Dopiero od 2.5!

Klauzula else try: print 2/n except: print( Nieudane dzielenie ) else: print( Udane dzielenie )

Zgłaszanie wyjątków raise raise RuntimeError( Stało się coś złego )

Zgłaszanie wyjątków raise raise RuntimeError( Stało się coś złego ) raise Wyjątek

Plan wykładu Klasy i obiekty 1 Klasy i obiekty 2 3 4

Wszystko jest obiektem.

Stary i nowy styl Klasy i obiekty Klasyczne klasy Rozróżnienie między typami wbudowanymi i użytkownika Klasy w nowym stylu Brak rozróżnienia między klasami a typami

Klasy i nadklasy obiektów Jak sprawdzić klasę obiektu >>> type(5) <type int > >>> x = 5 >>> x. class <type int >

Klasy i nadklasy obiektów Jak sprawdzić klasę obiektu >>> type(5) <type int > >>> x = 5 >>> x. class <type int > Jak sprawdzić nadklasę obiektu <type int > >>> x = 5 >>> x. class. bases (<type object >, )

Uniwersalny obiekt Obiekt uniwersalny: ma wszystkie pola i implementuje dowolną metodę.

Implementacja uniwersalnego obiektu Implementacja klasy class Uniwersalna(object):

Implementacja uniwersalnego obiektu Implementacja klasy class Uniwersalna(object): Implementacja dostępu do atrybutów def def getattr (self, name): print ( Odwołujesz się do atrybutu, name) return self setattr (self, name, val): print ( Przypisanie %s wartości %s % (name, val))

Implementacja uniwersalnego obiektu Implementacja klasy class Uniwersalna(object): Implementacja dostępu do atrybutów def def getattr (self, name): print ( Odwołujesz się do atrybutu, name) return self setattr (self, name, val): print ( Przypisanie %s wartości %s % (name, val)) Wszystkie metody def call (self, *args): print Wywołano metodę z argumentami, args

Zadanie Klasy i obiekty Implementacja klasy wektorów Vector: operatory arytmetyczne v1 = Vector([1, 0, 0]) v2 = Vector([0, 1, 0]) v3 = v1 + v2 str(vector([0, 0 1])): <0, 0, 1> len(vector([0, 0 1])): 3

Implementacja wektorów class Vector: def init (self, lista): self.value = lista

Implementacja wektorów class Vector: def init (self, lista): self.value = lista Implementacja dodawania def add (self, arg): if self. class <> arg. class or len(self.value) <> len(arg.value): return None res = Vector( [x + y for x, y in zip(self.value, arg.value) ]) return res

Wykorzystanie Klasy i obiekty v1 = Vector([1, 0, 3]) v2 = Vector([0, 2, 0]) print v1 + v2

Inne standardowe metody mul sub div mod mnożenie odejmowanie dzielenie reszta z dzielenia Tak zdefiniowane operatory zachowują standardowe priorytety.

Postać napisowa Klasy i obiekty >>> print Vector([1,2,3]) < main.vector instance at 0xb7eabdec>

Postać napisowa Klasy i obiekty >>> print Vector([1,2,3]) < main.vector instance at 0xb7eabdec> class Vector def str (self): return < +,.join([str(x) for x in self.value]) + >

Postać napisowa Klasy i obiekty >>> print Vector([1,2,3]) < main.vector instance at 0xb7eabdec> class Vector def str (self): return < +,.join([str(x) for x in self.value]) + > >>> print Vector([1,2,3]) <1, 2, 3>

Własności kolekcji Pożądane cechy kolekcji Indeksowany dostęp do danych k[4] Obsługa poprzez iteratory for in rozmiar kolekcji len

Dostęp indeksowany Implementacja akcesorów w klasie Vector def def getitem (self, index): return self.value[index] setitem (self, index, value): self.value[index] = value Zastosowanie >>> print v1[k] >>> v1[k] = k

Pozostałe własności kolekcji Usuwanie elementu za pomoca del def delitem (self, index): del self.value[index]

Pozostałe własności kolekcji Usuwanie elementu za pomoca del def delitem (self, index): del self.value[index] Długość kolekcji: len def len (self): return len(self.value)

Stan obiektu/modułu Napis. class Figura. doc Figura. dict plik. file name

Słowniki symboli Klasy i obiekty Zmienne (oraz nazwy funkcji) w czasie działania programu są przechowywane w słowniku. dir() dict

Funkcja standardowa dir() Co robi dir Zwraca listę dostępnych nazw. Jeśli nie podano argumentu, to podaje listę symboli w lokalnym słowniku.

Funkcja standardowa dir() Co robi dir Zwraca listę dostępnych nazw. Jeśli nie podano argumentu, to podaje listę symboli w lokalnym słowniku. >>> dir(vector([1,2,3])) [ add, cmp, delitem, doc, getitem, init, len, module, setitem, str, iter, next, value ] >>> Vector([1,2]). dict { value : [1, 2, 3]}

Przydatność słowników if nazwa in obj. dict : print obj.nazwa if str in dir(obj): print dir(obj)