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
Személyes eszközök