Ú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
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest