Zanurkuj w Pythonie/Obiekty i klasy: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Piotr (dyskusja | edycje)
Linia 224:
# Metoda <tt>__init__</tt> jest wywoływana bezpośredniu po utworzeniu instancji klasy. Może kusić aby nazwać ją konstruktorem klasy, co jednak nie jest prawdą. Metoda <tt>__init__</tt> wygląda podobnie do konstruktora (z reguły <tt>__init__</tt> jest pierwszą metodą definiowaną dla klasy), działa podobnie (jest pierwszym fragmentem kodu wykonywanego w nowo utworzonej instancji klasy) a nawet podobnie przmi (słowo „init” sugeruje, że jest to konstruktor). Niepoprawne, ponieważ obiekt jest już utworzony przed wywołaniem metody <tt>__init__</tt>, a my już posiadamy poprawną referencję do świeżo utworzonego obiektu. Jednak <tt>__init__</tt> jest najbliższą rzaczą, która przypomina konstruktor w Pythonie, ponadto pełni taką samą rolę.
# Pierwszy argument każdej metody znajdującej się w klasie, włączając w to <tt>__init__</tt>, jest zawsze referencja do bieżącej instancji naszej klasy. Według powszechnej konwencji, argument ten jest zawsze nazywany <tt>self</tt>. W metodzie <tt>__init__</tt> <tt>self</tt> odwołuje się do właśnie utworzonego obiektu; w innych metdoach klasy, odwołuje się do instancji, z której wywoływaliśmy metodę. Mimo, że musisz wyraźnie określić <tt>self</tt> podczas definiowania metody, nie określasz go w czasie wywoływania metody; Python dodaje go automatycznie.
# Motoda <tt>__init__</tt> może posiadać dowolną liczbę argumentów i podobnie jak w funkcjach, argumenty mogą być zdefiniowane z domyślnymi wartościami (i w ten sposób stają się argumentami opcjonarnymiopcjonalnymi). W tym przypadku argument <tt>filename</tt> ma domyślną wartość okreśłoną jako <tt>None</tt>, który jest Pythonową pustą wartością (czyli null).
 
{{Infobox|