MyClass.fv() TypeError: unbound method fv() must be called with MyClass instance as first argument"> MyClass.fv() TypeError: unbound method fv() must be called with MyClass instance as first argument">

Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Script nyelvek előadás

Hasonló előadás


Az előadások a következő témára: "Script nyelvek előadás"— Előadás másolata:

1 Script nyelvek előadás
- osztályok

2 Osztály definíció Megjegyzés: osztály függvény
class MyClass: "Az elso osztaly." # dokumentációs string x = # osztály változó def fv(self) : # osztály függvény return 42 MyClass.x == 20 MyClass.__doc__ == 'Az elso osztaly.' MyClass.y = 10 - MyClass.y == 10 Megjegyzés: osztály függvény MyClass.fv == <unbound method MyClass.fv> MyClass.fv() TypeError: unbound method fv() must be called with MyClass instance as first argument

3 Példányosítás Megjegyzés: osztály függvény mc.fv() --- MyClass.fv(mc)
mc = MyClass() mc.x == 20 #osztály változó elérése mc.fv() == 42 Megjegyzés: osztály függvény mc.fv() MyClass.fv(mc) mc.y = 10 # példány szintű változó - mc.y == 10 mc.x = 30 # példány szintű változó - mc.x == 30 - MyClass.x == 20

4 Mutable osztály változó
class MyClass2: x = [10] mc2 = MyClass2() mcc = MyClass2() mc2.x.append(20) - mc2.x == [10, 20] - MyClass2.x == [10, 20] - mcc.x == [10, 20] mc2.x = [10,20] # példány szintű változó mc2.x.append(30) - mc2.x == [10, 20, 30]

5 Példány szintű változó inicializálása
class MyClass3: def __init__(self): self.x = [10] mc3 = MyClass3() mcc = MyClass3() mc3.x.append(20) - mc3.x == [10, 20] - mcc.x == [10] Megjegyzés: MyClass3.x AttributeError: class MyClass3 has no attribute 'x'

6 Paraméterátadás Megjegyzés: osztály függvény
class MyClass4: def __init__(self, x, y): self.lista = [x,y] def append(self, x): self.lista.append(x) mc4 = MyClass4(10,20) - mc4.lista == [10,20] mc4.append(30) - mc4.lista == [10, 20,30] Megjegyzés: osztály függvény mc4.append(x) MyClass4.append(mc4,x)

7 Öröklődés - Többszörös öröklődés
class Gyerek(Szülő1, Szülő2, ..., Szülőn): ... - Probléma: gyémánt kapcsolat - Öröklési sorrend - old style class vs. new style class - old style class: prioritás balról jobbra - new style class: MRO (method resolution order) A B C D

8 Old-style vs New-style
class C(): "Old-style class" pass class D(object): "New-style class (default in Python 3)" x = C() - type(x) == <type 'instance'> - x.__class__ == <class __main__.C at ... > y = D() - type(y) == <class '__main__.D'> - y.__class__ == <class '__main__.D'>

9 Példaprogramok osztály1.py, ..., osztály6.py


Letölteni ppt "Script nyelvek előadás"

Hasonló előadás


Google Hirdetések