Jestem nowy w programowaniu i niedawno poznałem metodę specjalną init
Ale po co właściwie jej używać?
Przecież obiekt klasy i tak zostanie utworzony niezależnie czy tego użyjemy czy nie
Zeby w konstruktorze zrobic to co chcemy. Np ustawic atrybut name
na taki jaki przyszedl w parametrze albo wywolac jakas metode
przyklad z brzegu:
class Person:
def __init__(self, n):
self.name = n
print("Osoba o imieniu %s utworzona!" % self.name)
tomek = Person("Tomek")
Po pierwsze __init__
nie jest konstruktorem, jest pierwszą metoda która jest wywołana po utworzeniu obiektu. Więc jeśli chcesz przykładowo zdefiniować sobie na starcie jakieś zmienne z których będą korzystać metody tej klasy to okazuje się dość przydatne.
Poczytałem trochę o __new__
vs __init__
i wychodzi na to, że __init__
robi dokładnie to co konstruktory w innych językach, a __new__
jest mniej więcej odpowiednikiem operatora new
z C++. Czy operator new
z C++ ktokolwiek nazywa konstruktorem?
Zarówno metoda __new__
w Pythonie jak i operator new
w C++ mają jedno i to samo zadanie - zwrócić coś na czym da się odpalić konstruktor. To coś będzie wartością wyrażenia wywołującego new
.