Metoda __init__

NieUmiemProgramować
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 4 lata
  • Postów:17
0

Cześć, trochę po marudzę czasem w tym dziale z pierdołami. Proszę o wyrozumiałość przez najbliższe parę tygodni/miesięcy ;)

Mam pytanie odnośnie metody init. Przerabiam książkę do nauki pythona i tam przedstawiono tą metodę, jako coś co jest potrzebne do stworzenia klasy.
I ok przyjmuje do wiadomości, ale chciałbym zrozumieć co konkretnie ona robi.

Kopiuj
class Dog(): #Tworzymy klasę Dog.
    def __init__(self): # co tutaj się tak na prawdę dzieje? Czym tak na prawdę jest parametr self?

Może pytanie abstrakcyjnie głupie, ale jednak chciałbym to w 100% zrozumieć.

Potrafię rozbudować taką klasę dodać metody które będą modyfikować jakieś atrybuty itd. Bo książka tego uczy, ale nie tłumaczy jak to na prawdę działa.
Pomoże ktoś kretynowi? :)

lion137
  • Rejestracja:około 8 lat
  • Ostatnio:11 minut
  • Postów:4935
1

Dunder init to, po prostu, konstruktor obiektu, jak Znasz inne języki, np., C++, czy Javę, to Wiesz co to. Gdy Napiszesz gdzieś: hot_dog_dog = Dog(), to w tym momencie tworzy się egzemplarz obiektu i zostaje przekazany, jako pierwszy parametr - self (w Pythonie, nie tak jak w innych językach, musi się go wpisać) do __init__ , również i inne parametry, gdy są, i tam dalej metoda działa z obiektem.
Czyli, jeszcze raz, dunder init w Pythonie = konstruktor w C++.


NieUmiemProgramować
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 4 lata
  • Postów:17
0

Tzn nie znam innych języków(pewnie dlatego mam takie "problemy").

Ok dziękuje za łopatologiczne wytłumaczenie. Teraz jest zdecydowanie jaśniej. ;)

Haskell
  • Rejestracja:prawie 10 lat
  • Ostatnio:12 miesięcy
  • Postów:4700
3

Warto dodać, że w Pythonie masz dwie magiczne metody "konstruktory". Najpopularniejszy __init__ przyjmuje jako parametr obiekt (self) i wykonuje się gdy obiekt danej klasy już powstał, ale nie został jeszcze zwrócony do wywołującego. __init__ często używa się do zainicjalizowania stanu obiektu, np. nadania wartości jakiemuś polu. Jest jeszcze magiczna (dunder) metoda __new__ która jest statyczna, przyjmuje jako parametr klasę (nie mylić z obiektem), wykonuje się jeszcze przed powstaniem obiektu danej klasy. Jej celem jest umożliwienie programiście wpłynięcia na proces tworzenia obiektu. Metoda __new__ zwraca instancję obiektu.


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz
edytowany 1x, ostatnio: Haskell
NieUmiemProgramować
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 4 lata
  • Postów:17
0

Dzięki za informacje ;) Przyda się na pewno, dziś wieczorkiem popatrzę jak to działa.

Generalnie mam do Was pytanko.
Jako że się uparłem trochę na naukę pythona (w pracy byłby mi przydatny) ale w sumie nie tylko. I teraz tak jak pisałem przerabiam sobie książkę: python instrukcje dla programisty
i mam dylemat. Pewnie za jakiś krótki czas, może 2-3 tyg skończę ten materiał i co dalej? Może to głupio zabrzmi ale większość książek tak jak zresztą i ta z której korzystam uczy wszystkiego od zera. I sądząc po spisach treści jest w nich zawarta ta sama +/- treść. Znacie może jakieś tytuły które są o krok dalej? Bo na naukę jakiegoś konkretnego freamworka chyba będzie za wcześnie.

Pewnie widzieliście 4000 takich pytań, ale nie mogłem znaleźć jakiegoś fajnego tytułu książki dla ludzi znających podstawy podstaw.

WO
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad rok
  • Postów:25
1

Np : Zaawansowany Python. Jasne, zwięzłe i efektywne programowanie Autor:Luciano Ramalho

lion137
  • Rejestracja:około 8 lat
  • Ostatnio:11 minut
  • Postów:4935
1

Tak, Luciano Ramalho rzondzi:) Rzuć, również, okiem tutaj:
https://interactivepython.org/runestone/default/user/login?_next=/runestone/default/index ,
tutaj: https://realpython.com/ ,
oraz tutaj: https://dbader.org/


edytowany 1x, ostatnio: lion137
NieUmiemProgramować
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 4 lata
  • Postów:17
0

O książce Zaawansowany Python autorstwa Luciano Ramalho myślałem, ale nie mogłem znaleźć na necie jakiś sensownych opinii, jak panowie polecają to biere.

@lion137 świetne te stronki dzięki!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.