Zanurkuj w Pythonie/Obiekty i klasy: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
Linia 138:
== Importowanie modułów za pomocą ''from module import'' ==
W Pythonie mamy dwa sposoby importowania modułów. Obydwa są przydatne, dlatego też powinniśmy umieć je wykorzystać. Jednym ze sposobów jest użycie polecenia <tt>import nazwa_modulu</tt>, który
from UserDict import UserDict
Jak widzimy jest to w składni bardzo podobne do <tt>import nazwa_modulu</tt>, ale z jedną ważną różnicą: atrybuty i metody importowanego modułu są importowane bezpośrednio do lokalnej przestrzeni nazw, tak więc
{{Infobox|
tekst=<tt>from module import *</tt> w Pythonie jest podobne do <tt>use module</tt> w Perlu; <tt>import module</tt> w Pythonie przypomina <tt>require module</tt> w Perlu.}}
{{Infobox|
tekst=<tt>from module import *</tt> w Pythonie jest analogią do <tt>import module.*</tt> w Javie; <tt>import module </tt> w Pythonie przypomina <tt>import module</tt>
'''Example 5.2. ''import module'' a ''from module import'' '''
Linia 162:
<type 'function'>
# Moduł <tt>types</tt> nie posiada żadnych metod; on właśnie posiada atrybuty dla każdego typu obiektu w Pythonie. Zauważmy, że
# FunctionType nie został sam w sobie określony w przestrzeni nazw; istnieje on tylko w kontekści modułu <tt>types</tt>.
# Używając tej składni atrybut FunctionType z modułu <tt>types</tt> został zaimportowany bezpośrednio do lokalnej przestrzeni nazw.
Linia 169:
Kiedy powinniśmy używać <tt>from module import</tt>?
* Kiedy często odwołujemy się do atrybutów i metod, a także nie potrzebujemy wpisywać wiele razy nazwy modułu.
* Jeśli potrzebujemy selektywnie zaimportować tylko kilka atrybutów, metod, powinniśmy wykorzystać <tt>from module import</tt>.
* Jeśli moduł zawiera atrybuty lub metody, które posiadają taką samą nazwę jaka jest w naszym module, powinniśmy wykorzystać <tt>import nazwa_modulu</tt> aby
W innych przypadkach jest to kwestia stylu, możemy spojrzeć na kody napisane obydwoma sposobami.
{{Infobox|
tekst=Należy używać <tt>from module import *</tt> oszczędnie, ponieważ utrudnia on określenie, skąd pochodzi dana funkcja lub atrybut, dlatego też utrudnia debugowanie
== Definiowanie klas ==
|