- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- One mobilszolgáltatások
- Végre hivatalos, mikor lesz az S26 hivatalos
- Xiaomi 13 Pro - szerencsés szám
- iPhone topik
- Huawei Watch GT 6 és GT 6 Pro duplateszt
- Reklámok kikapcsolása Xiaomi, Redmi és Poco telefonokon
- Cáfolja a Realme, hogy leépülne
- Hamarosan lesz a Nothingnak mondanivalója
- Húszmillió mobilara adta ki a Honor a tízparancsot
Ú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
- Akciós áron, Lenovo ThinkPad X13 Gen 2 - 16GB RAM, 512GB SSD, érintőkijelző, Yoga funkció
- Asus TUF Gaming A15 AMD Ryzen 7-7735HS/16GB RAM/512GB SSD/RTX4060VGA/15,6" 144Hz kijelző
- DDR4 -es 8GB -os notebook memória eladó
- HP EliteDesk 800 G3 PC, I5-7500, 8GB DDR4, 256GB SSD, Win 11, Számla, garancia ( olvasd végig)
- HP EliteDesk 800 G3 MT, PC, I7-7700, 8GB DDR4, 256GB SSD, Win 11, Számla, garancia ( olvasd végig)
- 230 - Lenovo Legion 5 (15IRX10) - Intel Core i7-13650HX, RTX 5060
- Eredeti Lenovo 300W töltők - ADL300SDC3A
- GYÖNYÖRŰ iPhone 14 Pro Max 128GB Deep Purple - 1 ÉV GARANCIA -Kártyafüggetlen, MS3702
- GYÖNYÖRŰ iPhone 14 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3972
- iPhone 16 Pro 128GB Desert Titanium -1 ÉV GARANCIA - Kártyafüggetlen
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs


