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:około 5 godzin
  • Postów:4923
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:11 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:około 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:około 5 godzin
  • Postów:4923
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!

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)