matematykaszkolna.pl
:) Metis: Dziadku Kiedyś napisałeś: "class Parent: pass class Child1(Parent): pass class Child2(Parent): pass if __name__ == '__main__': Parent.x = 1 print(Parent.x, Child1.x, Child2.x) Child1.x = 2 print(Parent.x, Child1.x, Child2.x) Child2.x = 3 print(Parent.x, Child1.x, Child2.x) Parent.x = 4 print(Parent.x, Child1.x, Child2.x) Jaki będzie wydruk na ekran? " Jaki będzie ten wydruk ?
14 gru 22:21
Dziadek Mróz: rysunek Parent Child1 Child2 x brak brak brak Parent.x = 1 print(Parent.x, Child1.x, Child2.x) Parent Child1 Child2 x 1 1 1 Child1 i Child2 dziedziczą po Parent oraz inicjalizujemy zmienną globalną klasy Child1.x = 2 print(Parent.x, Child1.x, Child2.x) Parent Child1 Child2 x 1 2 1 Zgodnie ze schematem dziedziczenia tylko Child1 zmienia swój x Child2.x = 3 print(Parent.x, Child1.x, Child2.x) Parent Child1 Child2 x 1 2 3 Zgodnie ze schematem dziedziczenia tylko Child2 zmienia swój x Parent.x = 4 print(Parent.x, Child1.x, Child2.x) Parent Child1 Child2 x 4 2 3 Child1 i Child2 mają swoje x, więc zmienia się tylko Parent.x
15 gru 00:10
Metis: Wowemotka
15 gru 00:25
Metis: Ile zajeła Ci nauka tego wszystkiego?emotka Na uczelniach takich rzeczy nie uczą.
15 gru 00:32
52: Nie uczą i nie będą uczyć
15 gru 00:38
Dziadek Mróz: Tego się samemu musisz nauczyć
15 gru 00:39
Metis: Wiem emotka Zazdroszczę wiedzyemotka
15 gru 00:40
Metis: Gdzie można więcej poczytać o programowaniu obiektowym−klasach, strukturach, destr/konst. itd od 0 do pewnego stopnia zaawnsowania? Może być po ang emotka W sieci jest tego mnóstwo. Polecisz mi coś?
15 gru 01:53
Dziadek Mróz: google.com
15 gru 15:10
Metis: Dzięki
15 gru 16:13
Dziadek Mróz: Klasy w Pythonie są bardzo proste: class Klasa: counter = 0 def __init__(self, d = 1): type(self).counter += 1 self.data = d def __del__(self): type(self).counter −= 1 if __name__ == '__main__': k1 = Klasa() k2 = Klasa(2) k3 = Klasa(3) ''' Klasa.data nie jest atrybutem klasy Klasa.counter jest atrybutem klasy (jest taki sam dla wszystkich instancji tej klasy) k1.data jest atrybutem obiektu k1.counter jest atrybutem klasy do czasu aż nie zdefiniujemy atrybutu obiektu o takiej nazwie ''' print(Klasa.counter, k1.counter, k2.counter, k3.counter) # 3 3 3 3 del k3 print(Klasa.counter, k1.counter, k2.counter) # 2 2 2 k1.counter = 8 # k1.counter przestał być atrybutem klasy i stał się atrybutem obiektu print(Klasa.counter, k1.counter, k2.counter) # 2 8 2 Klasa.counter = 5 print(Klasa.counter, k1.counter, k2.counter) # k2.counter ciągle jest atrybutem klasy # 5 8 5
15 gru 16:22
Dziadek Mróz: funkcja type() zwraca typ danej zmiennej, ew. nazwę klasy jaką przedstawia obiekt słówko kluczowe self oznacza obiekt na jakim się opieramy w definicji klasy więc type(self) zwróci nam w tym przypadku typ Klasa
15 gru 16:24
Dziadek Mróz: F F F FRISTAJLO!
16 gru 18:58
bezendu: "Szkoła programowania"
16 gru 23:03
maths: Na uczelniach nie uczą takich rzeczy jak programowanie obiektowe? Chyba nie do końca jest to prawdą emotka Nie obniżajmy rangi studiów, bo na niektórych uczelniach poziom jest naprawdę wysoki i takie rzeczy są absolutnymi podstawami.
17 gru 12:24
Metis: Oczywiście emotka
17 gru 14:12
52: maths ja mam na myśli różnicę, pomiędzy wymaganiem a uczeniem emotka Wymagając od studentów, uczelnia narzuca swój standard, ale czy prowadzący wytłumaczą/nauczą to już inna kwestia.
17 gru 14:30
bezendu: Zależy jakiego prowadzącego trafisz.
17 gru 16:18
Dziadek Mróz: Na mojej uczelni prowadzący tylko pokazał drzwi a kto przez nie przeszedł to inna bajka. Slajdy z teorią i praktyka na wysokim poziomie po tygodniu pisania w domu, ot co emotka
17 gru 20:29
Metis: Udzielasz korepetycji ? emotka
17 gru 20:36
Dziadek Mróz: Nie
18 gru 02:43
Mariusz: Może to i lepiej bo z tego że co nieco wie nie wynika że umie to przekazać o czym już wspominałem Z tymi korepetycjami to powinieneś uważać bo ogłaszają się też tacy którzy nie potrafią napisać kodu
18 gru 03:07
Dziadek Mróz: Po robocie nie gadam o robocie
18 gru 05:05
Mariusz: Metis jak chcesz zadać jakieś pytanie to idź lepiej na takie fora jak np stack overflow tam prędzej ci odpowiedzą o ile znasz angielski Nie polecam takich forów jak 4programmers bo nie dość że nie odpowiadają sensownie to jeszcze wyrzucają wątki do kosza bez uzasadnienia
18 gru 05:53
Mariusz: Metis chcesz zadanie z programowania ? Na razie nie z obiektowego Usuwaniem rekurencji się bawiłeś
18 gru 16:37
bezendu: Mariusz C# znasz ?
18 gru 17:16
Mariusz: ~15 lat temu miałem C oraz C++ razem z Pascalem a później trochę Javą się bawiłem Jednak tylko podstawy
18 gru 20:24
Mariusz: bezendu przypuśćmy że mamy rekurencyjną funkcję scalającą dwie posortowane listy Jak przepisać tę funkcję iteracyjnie , dodatkowo dobrze byłoby zwracaną wartość wywalić do listy parametrów struct node* SortedMerge(struct node* a, struct node* b) { struct node* result = NULL; /* Base cases */ if (a == NULL) return(b); else if (b==NULL) return(a); /* Pick either a or b, and recur */ if (a−>data <= b−>data) { result = a; result−>next = SortedMerge(a−>next, b); } else { result = b; result−>next = SortedMerge(a, b−>next); } return(result); }
18 gru 20:34
Dziadek Mróz: Najlepiej rozbij to na kilka funkcyj
19 gru 05:21
Mariusz: To ma być jedna funkcja dwa wywołania rekurencyjne przywołują pomysł użycia dwóch pętli np while jeśli tak to jakie by miały być warunki logiczne sterujące tą pętlą aby nie wyskakiwać z nich jakimiś instrukcjami typu goto Z drugiej strony ciekawe czy można wykorzystać tę pętlę z procedury dla tablic chociaż z listami jest trochę inaczej bo aby ją posortować wystarczy pozamieniać wskaźniki Trzeba to jednak tak zrobić aby zachować oryginalną kolejność powtarzających się kluczy
19 gru 11:44