Keresés

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

  • axioma

    veterán

    válasz #82595328 #1257 üzenetére

    Leszarmazasnal ugy kezdodik, hogy az osnek a member valtozoi automatikusan memberei a leszarmaztatassal kapottnak.
    Tehat a te peldadat ugy lenne "szep" (sot: normalis) osztalyokba rendezni, hogy van a Helyiseg, annak csak magassaga van, meg abstract (bocs, ezt pythonban nem hasznaltam, java-bol jottem) terulet es/vagy terfogat fuggvenye. Aztan van a teglalap alapu szoba, ennek van a hossza es szelte (pluszban!), meg a kerek szoba annak csak sugara, de ez mindketto csak ugyanattol az ostol (Helyiseg) szarmazik, nem egymasbol -- mert a vizsgalt tulajdonsagokban nem specializalt valtozata egyik a masiknak.
    Akkor jo lenne, ha lenne a Szoba ugy altalaban, magassag es _alapterulet_, es ennek spec. esete a kerek szoba, amit inicializalhatsz a magassag es sugar adatokkal (de kitolti a self.alapterulet-et is, amit az ostol orokolt, es igy mar az osnek a terfogat fuggvenyet le lehet futtatni).

    Amugy meg mar elozoleg szerepelt a konkret kodbeli kerdesedre az egyszerubb megoldas: a leszarmazottnak az ossel egyezo init-et kene megirnod, vagy mivel pont egyezo, nem kell megirnod, elhagyhatod...

    Es bocsanat, hogy nem vagyok didaktikus, a gyerekeim is mondjak hogy hulyen magyarazok... a tanar szakot bar probaltam volna melletenni 20 eve, de vegul elmaradt.

  • cadtamas

    tag

    válasz #82595328 #1257 üzenetére

    Ha jól értem a problémádat:

    class Egy():
    def __init__(self,egyik=1,masik=2):
    self.egyik = egyik
    self.masik = masik
    def szorzat(self): #Nem kell attribútumot átadni
    return self.egyik * self.masik

    class Ketto(Egy):
    def __init__(self,egyik):
    Egy.__init__(self) #Ezzel érjük el a szülő osztály konstruktorában a 'masik' nevű változót
    self.egyik=egyik


    a = int(input('Adj egy számot!'))
    # b = int(input('Adj még egy számot')) #Erre nincs szükség mert ez öröklött érték lesz
    egyke = Ketto(a)
    print ('Egyik = %s' % egyke.egyik)
    print ('Masik = %s' % egyke.masik)
    print ('Szorzat = %s' % egyke.szorzat())

  • cadtamas

    tag

    válasz #82595328 #1257 üzenetére

    És így néz, ki ha új metódust is szeretnél létrehozni és el akarod érni a szülő osztály egyik változóját:

    class Egy():
    def __init__(self,egyik=1,masik=2):
    self.egyik = egyik
    self.masik = masik
    def szorzat(self): #Nem kell attribútumot átadni
    return self.egyik * self.masik

    class Ketto(Egy):
    def __init__(self,egyik):
    Egy.__init__(self) #Ezzel érjük el a szülő osztály konstruktorában a 'masik' nevű változót
    self.egyik=egyik

    def szorzat_2(self): #Azért adtam más nevet, hogy lásd melyik fut le, de működne ugyanazzal a névvel is.
    return self.egyik*self.masik #A 'masik' nevű változót a szülő osztály (Egy) konstruktorából hívjuk meg.


    a = int(input('Adj egy számot!'))
    # b = int(input('Adj még egy számot')) #Erre nincs szükség mert ez öröklött érték lesz
    egyke = Ketto(a)
    print ('Egyik = %s' % egyke.egyik)
    print ('Masik = %s' % egyke.masik)
    print ('Szorzat = %s' % egyke.szorzat_2())

    Remélem ez már az, amit szeretnél.

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