Új hozzászólás Aktív témák
-
#82595328
törölt tag
válasz
cousin333
#1252
üzenetére
Köszönöm a válaszokat, Igazából egyik sem az, amit szeretnék. Azt hiszem, nem voltam teljesen világos.
Valójában az osztályok egyik előnyét akartam kipróbálni, hogy hogy tudok egy osztályt felhasználva létrehozni egy új osztályt. Azaz a régi osztályt megtartani, de egy új osztállyal kiegészíteni vagy a mostani esetben felülírni a régi osztály attribútumait és metódusait.
Azaz elsőkörben létrehoztam egy osztályt:
class Egy():
def __init__(self, egyik=1, masik=2):
self.egyik = egyik
self.masik = masik
def szorzat(self):
return self.egyik * self.masikEbben ugye van attribútum, és metódus is.
Ezt kiegészítettem egy példányosítással és adatbekéréses értékadással.
a = int(input('Adj egy számot!'))
b = int(input('Adj még egy számot'))
egyke = Egy(a, b)A végén pedig kiírattam.
print ('Egyik = %s' % egyke.egyik)
print ('Masik = %s' % egyke.masik)
print ('Szorzat = %s' % egyke.szorzat())Eddig egyszerű volt, és boldogultam is.
Most jönne a feladat, vagyis a problémám.
Szeretném felhasználni az előbb létrehozott osztályt egy másik osztályhoz úgy, hogy az új osztály a régi osztály egy attribútumát felülírja. Aztán a metódust írnám felül, aztán adnék hozzá új attribútumot és metódust.De már az első sem megy, azaz szeretném felülírni az új osztállyal a régi egyik attribútumát, de csak az egyiket.
Alapvetően azt gondoltam, hogy ez tök egyszerű felveszem az egyik attribútumot az új osztályba:class Ketto(Egy):
def __init__(self, egyik):
self.egyik = egyikÉs minden más változatlan.
Azaz a programnak az elgondolásom szerint így kéne kinéznie:
class Egy():
def __init__(self, egyik=1, masik=2):
self.egyik = egyik
self.masik = masik
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, b)
print ('Egyik = %s' % egyke.egyik)
print ('Masik = %s' % egyke.masik)
print ('Szorzat = %s' % egyke.szorzat())Ez pedig a hibaüzenet:
Traceback (most recent call last):
File "/home/sire/teszte.py", line 16, in <module>
egyke = Ketto(a, b)
TypeError: __init__() takes 2 positional arguments but 3 were givenNem értem mi a baj. Elvileg 2 változóm van.Mindkettő az első osztályból jön, csak az egyiket lecserélem a második osztályból. Ez lenne nekem a logikus. Mit csinálok rosszul, és mi a jó megoldás.
Új hozzászólás Aktív témák
- Google Chromecast topic
- Házimozi belépő szinten
- Windows 11
- Battlefield 6
- Ventilátorok - Ház, CPU (borda, radiátor), VGA
- Kormányok / autós szimulátorok topikja
- Kerékpárosok, bringások ide!
- Ezt nézed TikTokon és YouTube-on a telefonodon
- Arc Raiders
- Mr Dini: Mindent a StreamSharkról!
- További aktív témák...
- ÁRGARANCIA!Épített KomPhone i9 14900KF 32/64GB DDR5 RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Dell Precision 3571 4G LTE i7-12700H 16GB 512GB FHD RTX A1000 4GB 1 év teljeskörű garancia
- Dell Latitude E7470. Olcsó üzleti kategóriás laptop! Új akkumulátor!
- LicencAruhaz.hu OLCSÓ, LEGÁLIS SZOFTVEREK AZONNAL - Windows - Office - Win Server - ÖRÖK GARANCIÁVAL
- Apple iPhone 13 128GB,Újszerű,Dobozával,12 hónap garanciával
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi

