Matematikai Algoritmusok és Felfedezések I.

5. Előadás: Objektum orientált programozás 2

2021 március 8.

Öröklődés

Ha nem írunk semmilyen osztályt, automatikusan az object osztály a szülő osztály:

Metódus öröklődés

A metódusok öröklődnek, de felülírhatóak.

Attribútum öröklődés

Mivel az adat attribútumok bárhol létrehozhatóak, csak akkor "öröklődnek", ha a szülő osztályban lévő kód meghívódik.

A szülő osztály konstruktora

A szülő osztály metódusai kétféleképpen is elérhetőek

  1. a már tanult módon, az osztály nevével
  2. vagy pedig a super függvény segítségével

1. Példa: polinomok

2. Példa: Sárkányok

sarkany

Többszörös öröklődés

Vajon mi lesz az eredmény?

Azt, hogy melyik hívódik meg, az MRO (Method Resolution Order) határozza meg. Ez egy sorrend az osztályokon, és egy metódus hívásnál addig megy a sorrendben még meg nem találja valamelyik osztályban a metódust. Nem pontosan így működik, de ökölszabálynak jó, hogy felfelé mélységi kersést végez, balról jobbra sorrendben.

Modulok importálása

Teljes modul importálása

import modulnév

importálás után modulnev.attribútum alakban érjük el a modul tartalmát.

Saját modult is készíthetünk

A notebookal azonos mappában készítsünk egy mod.py fájlt.

almodulok importálása

from modulnév import almodul

Az almodult ezután almodul néven érjük el és nem modulnév.almodul néven.

Az as kulcssszó segítségével megadhatunk egy másik nevet is:

Egyszerre több mindent is importálhatunk

Konkrét függvényeket és osztályokat is importálhatunk

Minden importálása egy modulból

from modulnév import * után a modul teljes tartalma elérhető a modulnév. nélkül.

NAGYON NEM AJÁNLOTT mert tudtunkon kívül felülírhatunk dolgokat.

Modulok instalálása

Ha ModuleNotFoundError-t kapunk, akkor a Python nem találta meg a számítógépünkön a modult. Ekkor általában az a gond, hogy tényleg nincs is a gépünkön, így instalálni kell.

pip (pip installs packages)

A pip program automatikusan telepítődik az Anaconda keretében. Windowson az Anaconda Promptból érjük el, Linuxon pedig a terminálból. Használat:

Olyan packageket tudunk installálni amik megtalálhatóak a PyPi-ben. (https://pypi.org/)

Hasznos beépített packagek, standard library

Részletek: https://docs.python.org/3/library/

Numeric and Mathematical Modules

Functional Programming Modules

Hasznos külső packagek

Kiegészítő anyagok