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">
Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
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
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.