Ú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
- Fejhallgató erősítő és DAC topik
- Kertészet, mezőgazdaság topik
- QNAP hálózati adattárolók (NAS)
- Samsung Galaxy A54 - türelemjáték
- Miskolc és környéke adok-veszek-beszélgetek
- 5.1, 7.1 és gamer fejhallgatók
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Kerékpárosok, bringások ide!
- Okos Otthon / Smart Home
- LEGO klub
- További aktív témák...
- Eladó iMac Pro (2017) 27 CTO 8-core Xeon, 64GB RAM, 1TB SSD-Magic Keyboard+M.Mouse 2+M.Trackpad
- Lenovo ThinkPad P52 15.6" FHD IPS i7-8750H P1000 16GB 500GB NVMe ujjolv gar
- AKCIÓ! Intel Core i9 10900 10mag 20szál processzor garanciával hibátlan működéssel
- PlayStation Portal , garanciás , üvegfólia + ajándék Venom tok
- Bomba ár! HP EliteBook 840 G3 - i5-6GEN I 8GB I 256GB SSD I 14" HD I Cam I W11 I Garancia!
- AKCIÓ! LENOVO ThinkPad P15 Gen2 munkaállomás - i7 11800H 16GB DDR4 512GB SSD Quadro T1200 4GB W
- Bomba ár! Lenovo ThinkPad T450s - i5-5GEN I 8GB I 128SSD I 14" HD+ I Cam I W10 I Garancia!
- iPhone 17 Pro Max Mélykék - Bontatlan !! www.stylebolt.hu - Apple eszközök és tartozékok !!
- iPhone 13 128GB Pink -1 ÉV GARANCIA - Kártyafüggetlen, MS4651
- ÁRGARANCIA!Épített KomPhone i7 14700KF 32/64GB RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
