Witam
Właśnie przekopuje sobie informacje dot. OOP w pythonie, ogólnie wdaje sie w swiat pytona :) Piszę też w Javie skąd mam większość nawyków i nasunelo mi się pytanie, a może nawet pare, otóz:
1.Jak wyglada hermetyzacja pól w pythonie? wiem ze dodanie 2 underscorów przed nazwą pola to jakby nadac polu "private", ale z tego co widze nikt nie przykłada do tego wielkiej wagi, większość pól jest publiczna. Jak się z tym obchodzić?
2.Jeśli dobrze rozmiem, tworząc instancje klasy np User, w kodzie moge w dowolnym miejscu sobie stworzyć nowe pole w klasie, tak od po prostu je dodać. np:
class User:
def __init__():
self.name = ''
self.lastname = ''
# SOME CODE
className = User()
# SOME CODE 2
className.dowolnaNazwaPola = 'dowolna wartosc pola'
# ...CODE CODE CODE...
i tutaj moge użyc zmiennej dowolnaNazwaPola tak jakbym ją tworzył bezposrednio w klasie, choć zrobiłem to całkiem poza nią, tak ze ona nawet o tym nie wie w czystej swojej postaci
To znaczy, że defacto pól nie deklaruje się bezpośrednio jak np w javie, tylko w konstruktorach? Z punktu widzenia tego co umiem z Javy mechanizm pól jest tutaj szalenie rozchwiany i mam przeczucie, że moze prowadzic do duzych problemów.
3.Czym różni się dostęp do zmiennej "zmiennaA" od "zmiennaB" od "zmiennaC":
class Example:
zmiennaA = ''
self.zmiennaB = '' # <<< COFAM, nie moge tak zrobic, pytanie czemu :P?
def __init__():
self.zmiennaC = ''
- Istnieją w pythonie metody/pola statyczne tj np w javie, C# etc.?
I ostatnie pytanie tak btw. Zauważam pewną dziwną tendencje w swiecie pythona: otóż weźmy za łeb choćby PyQt wersje 4 i 5, albo nawet samego Pythona w wersji 2.7.6 i 3.3.5 ->> tutaj w kazdym API z wersji na wersje całkiem zmienia się struktura, inaczej nazywaja sie moduły, w innych miejscach nalezy szukac funkcji itd. Co mnie troszke dziwi, bo w javie tego nie doswiadczyłem :P
Często patrzyłem w API co robi funkcja, co zwraca itd: tutaj przy duck-typingu jest mała lipa, jakieś sugestie co do poznawania API w pythonie w jakiś sprawny sposób? :)
dzieki za cierpliwość, prosze o wyrozumiałość ;)