Wpis z mikrobloga

@croppz:
A możesz mi objaśnić, dlazego w powyższym kodzie, w momencie tworzenia instancji A, podawany jest argument „2”, pomimo że w deklaracji konstruktora pierwszy z lewej jest „self”?
Co mi podpowie IDE, 3 argumenty czy 2?
I dlaczego generalnie widnieje to self? Pytam jako phpowiec chcący poznać pythona. W PHP wewnątrz klasy jest $this dla instancjinoraz self dla samej klasy.
@Domownori: w przypadku init jako pierwszy argument automatycznie trafia zmienna, do której przypisujesz tworzony obiekt. Czyli w przypadku a = A(2) 'a' leci jako pierwszy argument, 2 jako drugi. Podobnie w przypadku wywoływania metod na obiekcie, obiekt trafia jako pierwszy argument. Pycharm z tego co pamiętam podpowiada dwa, tak na logikę inne IDE będą robić tak samo.

A dlaczego? Bo tak. ( ͡° ͜ʖ ͡°)
Wszystkie metody
@Domownori: nie musisz podawać self bo self jest wstrzykiwany, w innych językach jest podobnie z tym, że w pythonie z jakiś głupich powodów trzeba dawać tego selfa w parametrze. wynika to z tego, że brzydko mówiąc python pod maską jest trochę #!$%@? i nie widzi różnicy między funkcją a metodą.
@Domownori: zrób sobie ten przykład

def foo(self, b):
self.b = 2

class A:
pass

a = A()
a.foo = foo
a.foo(a, 3)

ile będzie wynosiło a.b? tak dwa

dlaczego to w ogóle działa? bo obiektowość w pythonie jest inna niż w javie, c# czy c++. ale przez syntax sugar udaje ze wszystko jest standardowo, coś jak js es6

tutaj musiałem podać selfa, dlaczego? bo python już nie wiedział czy ma go
generalnie jak ktoś mówi, że python jest prostym językiem i przyjaznym to nic nie wie o tym języku. python tak jak js nie ma klas chociażby, _init to nie jest konstruktor, to inicjalizer prawdziwy konstruktor to new_ tylko że to tak naprawdę klasmetoda czyli metoda która zwraca obiekt obiektu - jak ktoś miał kiedyś doczynienia z wzorcem projektowym fabryka to będzie kumał o co chodzi
@Domownori: spoko, teraz mówię o rzeczach których nie zna większość midów i pewnie część seniorów :) na rozmowie nie będziesz miał aż tak zaawansowanych dziwactw, ale mogą się pojawić pytania - jaką strukturą danych jest obiekt - dict ofc
@gryzon_c jesteś w stanie polecić jakieś materiały, które trochę przybliżyłby takie kwestie? Niby jestem juniorem i nikt tego ode mnie nie wymaga w robocie ale wziąłem się ostatnio na własną rękę za algorytmy to i o strukturach danych i OOP bym się podszkolil