Informatika2-2013/Gyakorlat10
A MathWikiből
(Változatok közti eltérés)
22. sor: | 22. sor: | ||
Foo.setx(f,5) | Foo.setx(f,5) | ||
Foo.bar(f) | Foo.bar(f) | ||
+ | </Python> | ||
+ | * Fontos, hogy Pythonban futási időben is változhatnak az osztályhoz tartozó változók: | ||
+ | <Python> | ||
+ | del f.x | ||
+ | </Python> | ||
+ | * Itt tehát magát a változót töröljük. | ||
+ | * Minden egyes objektum mögött a háttérben létezik egy szótár, ami tartalmazza az osztály elemeit: | ||
+ | <Python> | ||
+ | g = Foo() | ||
+ | vars(g) | ||
+ | g.__dict__ | ||
+ | </Python> | ||
+ | * Konstruktornak hívjuk azt a metódust, ami az objektum létrehozásával együtt hívódik meg: | ||
+ | <Python> | ||
+ | class Test: | ||
+ | def __init__(self): | ||
+ | print "Mostmar elhiszed?" | ||
+ | |||
+ | x = Test() | ||
+ | </Python> | ||
+ | * A destruktor konzisztens módon az objektum törlésével együtt hívódik meg: | ||
+ | <Python> | ||
+ | class Bar: | ||
+ | def __init__ (self, iamthis): | ||
+ | self.iamthis = iamthis | ||
+ | def __str__ (self): | ||
+ | return self.iamthis | ||
+ | bar = Bar('apple') | ||
+ | print bar | ||
</Python> | </Python> |
A lap 2013. április 16., 11:05-kori változata
Osztályok
- Az osztályok egységbe zárnak és a felesleges információt elrejtik.
- Az osztályok metódusokat és változókat tartalmaznak. Metódusokat tekintsük osztályokon belüli függvényeknek.
- Tekintsünk erre úgy, hogy a kód egy részét (mind tárolókat, mind a függvényeket nézve) összefogjuk.
- Egy objektum egy osztály konkrét megvalósítása.
Egy metódust az alábbi módon definiálunk pythonban:
class Foo: def setx(self, x): self.x = x def bar(self): print self.x
- Itt a lényeges dolog a self változó, ami mindig az első argumentuma a metódusnak. Ez mindig a konkrét megvalósított objektumot jelöli. Tehát külön értékadás nélkül self.x az osztályon (objektumon) belüli x változó, aminek az értékét állítjuk be a setx függvénnyel.
- Az alábbi módon hozhatunk létre objektumokat és hívhatjuk meg azok metódusait:
f = Foo() f.setx(5) f.bar() Foo.setx(f,5) Foo.bar(f)
- Fontos, hogy Pythonban futási időben is változhatnak az osztályhoz tartozó változók:
del f.x
- Itt tehát magát a változót töröljük.
- Minden egyes objektum mögött a háttérben létezik egy szótár, ami tartalmazza az osztály elemeit:
g = Foo() vars(g) g.__dict__
- Konstruktornak hívjuk azt a metódust, ami az objektum létrehozásával együtt hívódik meg:
class Test: def __init__(self): print "Mostmar elhiszed?" x = Test()
- A destruktor konzisztens módon az objektum törlésével együtt hívódik meg:
class Bar: def __init__ (self, iamthis): self.iamthis = iamthis def __str__ (self): return self.iamthis bar = Bar('apple') print bar