Keresés

Új hozzászólás Aktív témák

  • cousin333

    addikt

    válasz #82595328 #1262 üzenetére

    "Azt gondoltam, hogy ha példányosítom a származtatott osztályt, akkor abban benne lesz a szülőosztály is."

    Jól gondolod, ez a példában is így van. Nem látom az ellentmondást, amit nem értesz. Ha a származtatott osztálynak van egy init függvénye, akkor az felülírja a szülő osztály init-jét, hacsak külön nem hívod meg. Ez nem a szülő osztály példányosítása!

    A példádban az egyik és a másik példányváltozók, így nem s léteznek, amíg nem adsz nekik értéket a példányosítással. Az osztályváltozó "tud olyat", hogy példányosítás nélkül is létezik. Csinálhatsz például ilyet:

    class Egy():

    egyik = 1
    masik = 2

    def szorzat(self):
    return self.egyik * self.masik

    class Ketto(Egy):
    def __init__(self, egyik):
    self.egyik = egyik

    a = int(input('Adj egy számot!'))
    b = int(input('Adj még egy számot'))
    egyke = Ketto(a)
    print ('Egyik = %s' % egyke.egyik)
    print ('Masik = %s' % egyke.masik)
    print ('Szorzat = %s' % egyke.szorzat())

    Ekkor az egyik és a masik osztályváltozók, és az Egy osztálynak nem is kell __init__(), azt a Ketto tartalmazza. Amikor példányosítod a Ketto-t, akkor már lesz egy self.egyik és self.masik nevű változója 1 illetve 2 értékkel. A fenti példában mi kötelezően felülírjuk az egyik értékét, a masik marad 2.

    "We spared no expense"

Új hozzászólás Aktív témák