Kezdem az OO szemléletet pythonban?
Sziasztok,ha létrehozok egy osztályt:
class valami:
def __init__(self): konstruktort mindig meg kell hívni az osztályon belül?
utána tudom példányosítani:
peldanyom = valami()





Hát kövezzen meg mindenki, de szerintem a python nagyon rossz választás, ha OO szemléletet akar valaki megtanulni.
A kérdésedre a válasz igen, mindig kell legyen egy construktor, de sok más nyelv ezt nem követeli meg, mert ilyenkor automatikusan létrejön egy default konstruktor.





"A kérdésedre a válasz igen, mindig kell legyen egy construktor"
Nem, Pythonnál nem kötelező. Csak akkor van rá szükség, ha példányosításkor akarsz valamit végrehajtani az objektumon.
Lásd az alábbi példát:
nincs konstruktor, mégis működik.





Kérdező.
Az __init__() a magyar oktatási rendszer tévhiedelmeivel ellentétben NEM konstruktor, hanem inicializáló metódus. A konstruktor az a __new__() metódus, amelyet azonban a legtöbb esetben nem szoktunk explicite módosítani.
De amikor egy osztályt példányosítasz, akkor először a __new__(), utána az __init__() hívódik meg automatikusan, nem kell külön meghívnod (ez a lényegük). Így (ő is tévesen konstruktornak nevezi, mert fogalmatlan, de ezt dobta fel elsőnek a Google): [link]
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!