Posty

Klasy, Przestrzenie nazw, Nonlocal, Global i Local. Czy Python ma zmienne prywatne ?

Cześć! Fajnie Cię widzieć. Dzisiaj zajmiemy się tematem klas. Python jest językiem obiektowym, nie zawierającym w sobie jednak niektórych elementów, które zawierają inne języki. Nie posiada zmiennych typu prywatnych, chronionych. I Nie. Nie jest prawdą, że zapis __ sprawia, że pole staje się superprivate.  W Pythonie nie ma sensu komplikować sobie życia modyfikatorami dostępu. Ale o tym może później. Jak wygląda składnia klasy ? class nazwa():  ...statements... Klasa to przepis jak zrobić dany obiekt. Przepis to jednak jeszcze nie wykonanie, dlatego musimy coś w środku umieścić po czym stworzyć obiekt, który będzie już miał określone cechy. W Pythonie wygląda to podobnie jak w C++. Jest jednak kilka różnic. Zanim to zrobimy, zróbmy coś lubicie, czyli zajmiemy się przykładem class MyClass(): def name_space(value): def show(): nonlocal value value = value + 1 return value show() print(value) return value for i in range(3): x = MyCla

Python import modułów

Często się zdarza, że potrzebujemy w programie rozbić coś na mniejsze części. Znacznie prościej skupić się na mniejszej rzeczy, niż na całym programie od razu. Poza tym, znacznie lepiej jest później zarządzać takim kodem. Wyszukanie błędów, w programie napisanym w jednym pliku zajmującym 1000 linii kodu jest trudniejsze niż w 100 liniach, a które wiemy że są powiązane z danym błędem. Ten post może być również użyteczny dla osób piszących w C++, gdyż podział na pliki występuje również w C++. W tym języku używa się do tego celu instrukcji #include i załącza potrzebne pliki. Jeśli są w tej samej lokalizacji piszemy po prostu jej nazwę w cudzysłowiu. W pythonie występuje coś podobnego z dodatkowymi zabezpieczeniami. Przed wieloma dodawaniami, które są w C++ zmorą, a które tutaj są importowane po prostu raz, żeby uniknąć wielokrotnego dodawania. Nosi to nazwę moduł. Moduł to pojedyńczy plik zawierający dane, które Nas interesują na podany przez Nas temat. Dla przykładu można podać wyszu

Python podstawy

Cześć! Dzisiaj zajmiemy się czymś nietypowym. Nie będzie to nic z C++, a języka Python. Języka, który robi się coraz popularniejszy, z uwagi na jego prostotę. Z racji tego, że w poprzednich postach, zwykle lubiliście przykłady, zamiast suchej definicji, wytłumaczymy sobie podstawowe składnie pythona na przykładzie. Wypisanie na ekranie słowa Hello World, wymaga w C++ takiego czegoś: #include <iostream> int main(){ std::cout<<"Hello World!\n"; } W pythonie wystarczy napisać: print("Hello World!") I to bez żadnych znaczników nowej lini. Python zrobi to za Nas. Jak napisać kilka różnych danych w tej samej lini ? print("Hello","Word","!") W tym języku nie musimy również używać średników. Dodatkowo w C++ apostrofy oznaczały pojedyńczy znak. Natomiast w Pythonie oznaczają one to samo co ciąg znaków w C++. Czyli można powiedzieć, że apostrof jest równy cudzysłowom. Z uwagi na to, że znacznie c

Przeciążanie operatorów w C++

Cześć! Fajnie, że jesteś. Czym jest przeciążanie operatorów ? To możliwość użycia operatora w sposób niestandardowy w celu osiągnięcia zakładnego rezultatu. Na wstępie warto wspomnieć, że operatory nie rozwiązują żadnych problemów. Są one używane, w celu zapisania czegoś skomplikowanego w sposób prosty. Jakie wyróżniamy operatory ? Lista możliwych przeciążeń operatorów jest dosyć długa, dlatego najlepiej podlinkować ich listę: Lista operatorów możliwych i nie do przeciążenia Od czego zaczniemy Nasze rozważania ? Rozpoczynamy od operatora przypisania, o którym wspominałem w poprzednim poście. Więc wyjaśnijmy to sobie. Operator przypisania jest przeciążonym operator znaku równości, czyli = . Co on robi ? Głównym celem jest przypisanie zmiennych jednego obiektu, do drugiego. Jednocześnie warto zauważyć, że nie koniecznie musimy robić to co Nam karze operator przeciążenia i równie dobrze możemy wypisać tam sekretne wyznanie. A teraz do rzeczy. Jak to przeciążyć

Konstruktory w języku C++. Szczegółowa analiza krok po kroku

Cześć! Zgodnie z obietnicą z poprzedniego postu, dzisiaj zajmiemy się konstruktorami. Operatorem przypisania(którego efekt działania jest podobny do konstruktora kopiującego) zajmiemy się innym razem. Od czego należy zacząć ? Od definicji. Jest to specjalna metoda w ciele klasy, wywoływana na samym początku istnienia obiektu. Na razie wystarczy definicji. Teraz wyjaśnijmy sobie jej znaczenia. Jak widać konstruktor będzie dosyć podobny do zwykłych metod. Ma on jedną tą różnicę że wywołuje się na samym początku istnienia instancji klasy(czyli obiektu). Jak wygląda zapis ? #include <iostream> class MyClass { public: MyClass() { std::cout<<"To ja konstruktor.\n"; } }; int main(){ MyClass myClass; } I oto mamy Nasz konstruktor. No w sumie fajnie, ale po co mi konstruktor ? Konstruktor wywołuje się na samym początku istnienia obiektu, przez co jest możliwe zainicjowanie zmiennych w klasie bez narażenia się na ich odczyt, gdy jeszcze nie i

Przyjaźnienie klas i atrybut private

Cześć! Na początku wyjaśnimy definicje. Czym jest przyjaźnienie klas ? Jest to możliwość ujrzenia prywatnych danych przez inną klasę. Co ważne, to klasa definiuje kto jest jej przyjacielem, a nie bezpośrednio klasa, która korzysta z tych dobrodziejstw korzysta. Atrybut private - Coś prywatnego, zastrzeżonego tylko dla wybranych. W tym konkretnym przykładzie będą to atrybuty prywatne klasy. Po co to ? Prywatne znaczy nie dostępnego dla każdego. Nie zawsze chcemy dzielić informacje między wszystkie dostępne klasy. Wiąże się z tym zasada nie udostępniania informacji, których nie potrzebują. Listonosz, który przynosi Nam pocztę powinien wiedzieć gdzie mieszkamy, ale nie koniecznie musi wiedzieć, jakim samochodem jeździmy. Oczywiście jeśli nie jest to Fiat Multipia. Jak to wykorzystać w programowaniu obiektowym ? #include <iostream> struct Set; struct MyStruct { private: int value=0; void setValue(int v) { value = v; } public: void showValue() { std::cout&l

Programowanie obiektowe w C++. Cz. 2 Atrybuty: Public i protected.

Cześć! Dzisiaj zajmiemy się tak jak jest wspomniane w tytule atrybutami public i protected klasy. Czym one są? Public- Coś publicznego, dostępnego dla klasy. Klasa udostępnia swoje dane każdemu kto chce. Protected - Klasa ma metody, lub zmienne częściowo chronione przed odczytem lub modyfikacją. Mogą odczytać tylko klasy dziedziczące. Przykład: class MyClass { public: void showValue(int value) { std::cout<<value<<'\n'; } }myClass;///Dzięki temu że jest średnik można definiować obiekt bezpośrednio po nawiasach int main() { myClass.showValue(10); } W przeciwieństwie do poprzedniej lekcji, wystarczyło dodać atrybut public, by zadziałało. Jak można pokazac atrybut protected w akcji? class MyClass { protected: void show() { std::cout<<"Hello! It's MyClass\n"; } }; class SecondClass:public MyClass { public: void showInBaseClass() { this->show();} }; int main() { SecondClass sec; sec.showInBas