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 moliśmymogliśmy zobaczyć w rozdziale [[Programowanie:Python:Twój pierwszy program#Wszystko jest obiektem|Twój pierwszy program - „Wszystko jest obiektem”]]. Inny sposób realizuje tę samą czynność, ale posiada pewne różnice. Niżej jest prosty przykład wykorzystujący instrukcję <tt>from module import</tt>:
 
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 będziebędą dostępne bezpośrednio, bez dodawania kwalifikatora, z jakiego modułu korzystamy. Możemy importować określone pozycje lub użyć <tt>from module import *</tt>, aby zaimportować wszystko.
 
{{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> Ww Javie.}}
 
'''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 atrybutyatrybut (w tym przypadku FunctionType) musi być poprzedzony nazwą modułu - <tt>types</tt>.
# 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. W tedyWtedy najlepiej wykorzystać <tt>from module import</tt>.
* 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 pominąćuniknąć konfliktykonfliktu nazw.
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, (wyszukiwanie błędów w programie).}}
 
== Definiowanie klas ==