Zanurkuj w Pythonie/Potęga introspekcji: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Piotr (dyskusja | edycje)
Piotr (dyskusja | edycje)
Linia 140:
# Jako argument w funkcji <tt>str</tt> możemy podać także moduł. Tekstowa reprezentacja modułu posiada ścieżkę do miejsca, w którym ten moduł się znajduje. Na różnych komputerach może być ona inna.
# Subtelnym, lecz ważnych zachowaniem funkcji <tt>str</tt> jest także to, że argumentem może być nawet <tt>None</tt> -- odpowiednik Pythonowej, pustej wartości (ang. <tt>null</tt>). Dla takiego argumentu funkcja zwraca tekst <tt>'None'</tt>. Będziemy tę cechę wykorzystywać jako zaletę, co zresztą zobaczymy wkrótce.
 
Kluczową funkcją wykorzystaną w <tt>info</tt> jest funkcja <tt>dir</tt>. Funkcja ta zwraca listę atrybutów i metod pewnego obiektu czyli, może to być moduł, funkcja, łańcuch znaków, lista, słownik... niemal wszystko.
 
=== Przykład 4.7. Wprowadzenie do <tt>dir</tt> ===
 
>>> li = []
>>> dir(li) #(1)
['append', 'count', 'extend', 'index', 'insert',
'pop', 'remove', 'reverse', 'sort']
>>> d = {}
>>> dir(d) #(2)
['clear', 'copy', 'get', 'has_key', 'items', 'keys', 'setdefault', 'update', 'values']
>>> import odbchelper
>>> dir(odbchelper) #(3)
['__builtins__', '__doc__', '__file__', '__name__', 'buildConnectionString']
 
# <tt>li</tt> jest listą, dlatego też <tt>dir(li)</tt> zwróci nam listę wszystkich metod, które posiada lista. Zwróćmy uwagę na to, że zwracana lista zawiera nazwy metod w formie lańcucha znaków, a nie same funkcje.
# <tt>d</tt> jest słownikiem, dlatego <tt>dir(d)</tt> zwróci listę nazw metod słownika. Co najmniej jednach z nich -- <tt>keys</tt> powinna wyglądać znajomo.
# Dzięki temu funkcja ta staje się interesująca. <tt>odbchelper</tt> jest modułem, tak więc dzięki <tt>dir(odbchelper)</tt> otrzymamy listę wszyskich „dzieci” zdefiniowanych w tym module, dołączając wbudowane atrybuty takie jak <tt>__name__</tt>, czy też <tt>__doc__</tt> i jakiekolwiek inne atrybuty i metody zdefiniowane przez nas. W tym przypadku <tt>odbchelper</tt> posiada tylko jedną, zdefiniowaną przez użytkownika metodę -- funkcję <tt>buildConnectionString</tt> opisaną w [[Python:Wbudowane typy danych|Rozdziale 2]].
 
{{ProstaNawigacja|