Zanurkuj w Pythonie/Tworzenie instancji klasy: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
Nie podano opisu zmian |
|||
Linia 1:
{{Podświetl|py}}
== Tworzenie instancji klasy ==
'''Przykład 5.7. Tworzenie instacji klasy FileInfo'''
Linia 13:
{'name': '/music/_singles/kairo.mp3'}
# Utworzyliśmy instancję klasy FileInfo (zdefiniowaną w module <tt>fileinfo</tt>) i przypisaliśmy właśnie utworzony obiekt do zmiennej <tt>f</tt>. Użyliśmy jednego parametru <tt>/music/_singles/kairo.mp3</tt>, który będzie odpowiadał
# Każda instancja pewnej klasy ma wbudowany atrybut <tt>__class__</tt>, który jest klasą danego obiektu. (Dodajmy, że ta reprezentacja dołącza fizyczny adres instancji na moim komputerze, na twoim reprezentacja będzie się różniła) Programiści Javy mogą być zaznajomieni z klasą <tt>Class</tt>, która posiada metody takie jak <tt>getName</tt> czy <tt>getSuperclass</tt>, aby pobrać metadane o pewnym obiekcie. W Pythonie,
# Możesz pobrać notkę dokumentacyjną w podobny sposób jak
# Pamiętamy, że metoda <tt>__init__</tt> przypisuje argument <tt>filename</tt> do self["name"]? W tym miejscu mamy wynik. Argumenty podawane podczas tworzenia instancji pewnej klasy zostają
{{Infobox|
Linia 38:
Technicznym terminem tego sposobu odśmiecania pamięci jest „zliczanie odwołań”. Python przechowuje listę referencji do każdej utworzonej instancji. W powyższym przykładzie, mamy tylko jedną referencję do instancji <tt>FileInfo</tt> -- zmienną <tt>f</tt>. Kiedy funkcja się kończy, zmienna <tt>f</tt> wychodzi poza zakres, więc licznik odwołań zmiejsza się do <tt>0</tt> i Python niszczy tę instancję automatycznie.
W poprzednich wersjach Pythona występowały sytuacje, gdy zliczanie odwołań zawodziło i Python nie mógł wyczyścić po nas pamięci. Jeśli tworzyłeś dwie
Podsumowując w języku tym można po prostu zapomnieć o zarządzaniu pamięcią i pozostawić tę sprawę Pythonowi.
|