Po co używać metody __init__ ?

0

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

1

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")
0

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.

2

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1