Thread View: pl.comp.lang.python
19 messages
19 total messages
Started by hubert depesz lubaczewski
Tue, 15 Nov 2011 01:22
Pytania początkującego cz. 3
Author: hubert depesz lubaczewski
Date: Tue, 15 Nov 2011 01:22
Date: Tue, 15 Nov 2011 01:22
37 lines
2508 bytes
2508 bytes
1. najpierw pytanie praktyczne. parsuję maila przy pomocy klasy/modułu
email.
dostałem maila, wyciągam z niego przez mail.get() zawartość nagłówka.
ale nagłółek jest mime-encodowany.
znalazłem, że mogę go sobie przez email.header.decode_header()
zdekodować, ale dostaję z tego listę tupli, np. takich:
[('Re: Instalacja PostgreSQL / post\xeapy', 'iso-8859-2')]
jak mogę to zamienić na normalny string?
tych tupli może być więcej, ale w docach nic nie znalazłem więcej.
2. jak można się połapać w dokumentacji? to pytanie takie bardziej
ogólne, ale już tłumaczę.
znalazłem moduł email.
w docach do niego znalazłem informację o funkcji message_from_file
fajnie. ale nie jest napisane co ona zwraca (obiekt jakiejś klasy, ale
jakiej?). no nic. na sieci podpowiedzi, żeby zrobić print repr(obiekt)
ok. dowiedziałem się, że jest to instancja email.message.Message
fajnie.
odpaliłem pythona, zrobiłem import email (taki sam jak mam w swoim
programie), help( email.message.Message ) - i nie działa.
znowu - na sieci podpowiedzieli, że muszę zrobić: import email.message,
ale podobno nie jest regułą, że obcina się ostatni element z nazwy.
tu pytanie: czy jest jakieś miejsce/metoda/algorytm/cokolwiek dzięki
któremu mając "w ręku" obiekt mogę przeczytać do niego manuala - tzn. do
jego klasy, bez zgadywania co muszę zaimportować?
wiem, że powyższe brzmi marudnie, sorry, ale pytam całkiem serio - musi
być przecież jakaś metoda by znaleźć odpowiednie doce, tylko ja jej nie
widzę/nie znam.
depesz
--
The best thing about modern society is how easy it is to avoid contact with it.
http://depesz.com/
Re: Pytania początkującego cz. 3
Author: Mariusz Kruk
Date: Tue, 15 Nov 2011 07:44
Date: Tue, 15 Nov 2011 07:44
66 lines
3379 bytes
3379 bytes
epsilon$ while read LINE; do echo \>"$LINE"; done < "hubert depesz lubaczewski"
>1. najpierw pytanie praktyczne. parsuję maila przy pomocy klasy/modułu
>email.
>dostałem maila, wyciągam z niego przez mail.get() zawartość nagłówka.
>ale nagłółek jest mime-encodowany.
>znalazłem, że mogę go sobie przez email.header.decode_header()
>zdekodować, ale dostaję z tego listę tupli, np. takich:
>[('Re: Instalacja PostgreSQL / post\xeapy', 'iso-8859-2')]
>
>jak mogę to zamienić na normalny string?
email.charset.Charset.header_encode?
>2. jak można się połapać w dokumentacji? to pytanie takie bardziej
>ogólne, ale już tłumaczę.
>znalazłem moduł email.
>w docach do niego znalazłem informację o funkcji message_from_file
>fajnie. ale nie jest napisane co ona zwraca (obiekt jakiejś klasy, ale
>jakiej?). no nic. na sieci podpowiedzi, żeby zrobić print repr(obiekt)
>ok. dowiedziałem się, że jest to instancja email.message.Message
>fajnie.
>
>odpaliłem pythona, zrobiłem import email (taki sam jak mam w swoim
>programie), help( email.message.Message ) - i nie działa.
>znowu - na sieci podpowiedzieli, że muszę zrobić: import email.message,
>ale podobno nie jest regułą, że obcina się ostatni element z nazwy.
>
>tu pytanie: czy jest jakieś miejsce/metoda/algorytm/cokolwiek dzięki
>któremu mając "w ręku" obiekt mogę przeczytać do niego manuala - tzn. do
>jego klasy, bez zgadywania co muszę zaimportować?
#v+
$ ipython
Python 2.6.7 (r267:88850, Aug 3 2011, 15:19:01)
Type "copyright", "credits" or "license" for more information.
IPython 0.10.2 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.
In [1]: import email
In [2]: email.message_from_file?
Type: function
Base Class: <type 'function'>
String Form: <function message_from_file at 0x912d8b4>
Namespace: Interactive
File: /usr/lib/python2.6/email/__init__.py
Definition: email.message_from_file(fp, *args, **kws)
Docstring:
Read a file and parse its contents into a Message object model.
Optional _class and strict are passed to the Parser constructor.
#v-
O to chodzi?
--
\------------------------/
| Kruk@epsilon.eu.org |
| http://epsilon.eu.org/ |
/------------------------\
Re: Pytania początkującego cz. 3
Author: Artur M. Piwko
Date: Tue, 15 Nov 2011 08:03
Date: Tue, 15 Nov 2011 08:03
50 lines
2905 bytes
2905 bytes
In the darkest hour on Tue, 15 Nov 2011 02:22:49 +0100,
hubert depesz lubaczewski <depesz@depesz.com> screamed:
> 1. najpierw pytanie praktyczne. parsuję maila przy pomocy klasy/modułu
> email.
> dostałem maila, wyciągam z niego przez mail.get() zawartość nagłówka.
> ale nagłółek jest mime-encodowany.
> znalazłem, że mogę go sobie przez email.header.decode_header()
> zdekodować, ale dostaję z tego listę tupli, np. takich:
> [('Re: Instalacja PostgreSQL / post\xeapy', 'iso-8859-2')]
>
> jak mogę to zamienić na normalny string?
> tych tupli może być więcej, ale w docach nic nie znalazłem więcej.
>
headers = [('Re: Instalacja PostgreSQL / post\xeapy', 'iso-8859-2')]
for hdr, enc in headers:
header = hdr.decode(enc)
# I tu masz to w Unikodzie.
> 2. jak można się połapać w dokumentacji? to pytanie takie bardziej
> ogólne, ale już tłumaczę.
> znalazłem moduł email.
> w docach do niego znalazłem informację o funkcji message_from_file
> fajnie. ale nie jest napisane co ona zwraca (obiekt jakiejś klasy, ale
> jakiej?). no nic. na sieci podpowiedzi, żeby zrobić print repr(obiekt)
> ok. dowiedziałem się, że jest to instancja email.message.Message
> fajnie.
> odpaliłem pythona, zrobiłem import email (taki sam jak mam w swoim
> programie), help( email.message.Message ) - i nie działa.
> znowu - na sieci podpowiedzieli, że muszę zrobić: import email.message,
> ale podobno nie jest regułą, że obcina się ostatni element z nazwy.
>
> tu pytanie: czy jest jakieś miejsce/metoda/algorytm/cokolwiek dzięki
> któremu mając "w ręku" obiekt mogę przeczytać do niego manuala - tzn. do
> jego klasy, bez zgadywania co muszę zaimportować?
>
Np. via ipython
# import email.message
# dir(email.message.Message)
# email.message.Message?
# email.message.Message??
--
[ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:222B ]
[ 08:58:30 user up 12987 days, 20:53, 1 user, load average: 0.09, 0.04, 0.35 ]
Faith: not *wanting* to know what is true.
Re: Pytania początkującego cz. 3
Author: hubert depesz lubaczewski
Date: Tue, 15 Nov 2011 14:07
Date: Tue, 15 Nov 2011 14:07
53 lines
2890 bytes
2890 bytes
On 2011-11-15, Mariusz Kruk <Mariusz.Kruk@epsilon.eu.org> wrote:
> email.charset.Charset.header_encode?
nie sprawdzałem teraz, ale nazwa *encode* sugeruje dosyć mocno, że nie.
>>tu pytanie: czy jest jakieś miejsce/metoda/algorytm/cokolwiek dzięki
>>któremu mając "w ręku" obiekt mogę przeczytać do niego manuala - tzn. do
>>jego klasy, bez zgadywania co muszę zaimportować?
>
> #v+
> $ ipython
> Python 2.6.7 (r267:88850, Aug 3 2011, 15:19:01)
> Type "copyright", "credits" or "license" for more information.
>
> IPython 0.10.2 -- An enhanced Interactive Python.
> ? -> Introduction and overview of IPython's features.
> %quickref -> Quick reference.
> help -> Python's own help system.
> object? -> Details about 'object'. ?object also works, ?? prints more.
>
> In [1]: import email
>
> In [2]: email.message_from_file?
> Type: function
> Base Class: <type 'function'>
> String Form: <function message_from_file at 0x912d8b4>
> Namespace: Interactive
> File: /usr/lib/python2.6/email/__init__.py
> Definition: email.message_from_file(fp, *args, **kws)
> Docstring:
> Read a file and parse its contents into a Message object model.
>
> Optional _class and strict are passed to the Parser constructor.
>
> #v-
>
> O to chodzi?
ok. a jak teraz dostać dokumentację do tego "Message"? to jest
problemem, nie samo message_from_file, tylko dokumentacja do tego co ta
funkcja zwraca - czyli klasy "Message".
aby było jasne - ja tę dokumentację znalazłem (a dokładniej to na
#python na ircu mi pokazali), ale chodzi mi o algorytm jak z powyższego
się domyślić, że muszę:
1. import email.message
2. help( email.message.Message )
depesz
--
The best thing about modern society is how easy it is to avoid contact with it.
http://depesz.com/
Re: Pytania początkującego cz. 3
Author: hubert depesz lubaczewski
Date: Tue, 15 Nov 2011 14:09
Date: Tue, 15 Nov 2011 14:09
38 lines
2419 bytes
2419 bytes
On 2011-11-15, Artur M. Piwko <milusi.pysiaczek@buziaczek.pl> wrote:
>> 2. jak można się połapać w dokumentacji? to pytanie takie bardziej
>> ogólne, ale już tłumaczę.
>> znalazłem moduł email.
>> w docach do niego znalazłem informację o funkcji message_from_file
>> fajnie. ale nie jest napisane co ona zwraca (obiekt jakiejś klasy, ale
>> jakiej?). no nic. na sieci podpowiedzi, żeby zrobić print repr(obiekt)
>> ok. dowiedziałem się, że jest to instancja email.message.Message
>> fajnie.
>> odpaliłem pythona, zrobiłem import email (taki sam jak mam w swoim
>> programie), help( email.message.Message ) - i nie działa.
>> znowu - na sieci podpowiedzieli, że muszę zrobić: import email.message,
>> ale podobno nie jest regułą, że obcina się ostatni element z nazwy.
>>
>> tu pytanie: czy jest jakieś miejsce/metoda/algorytm/cokolwiek dzięki
>> któremu mając "w ręku" obiekt mogę przeczytać do niego manuala - tzn. do
>> jego klasy, bez zgadywania co muszę zaimportować?
>>
>
> Np. via ipython
>
> # import email.message
> # dir(email.message.Message)
> # email.message.Message?
> # email.message.Message??
ok. ale skąd wiadomo, że muszę zrobić ten import?
tzn. konkretnie ten, email.message.
i czy jak klasa będzie się nazywała a.b.c.d.e.f
to muszę zrobić zawsze import a.b.c.d.e (czyli nazwa klasy bez
ostatniego elementu)?
depesz
--
The best thing about modern society is how easy it is to avoid contact with it.
http://depesz.com/
Re: Pytania początkującego cz. 3
Author: Mariusz Kruk
Date: Tue, 15 Nov 2011 14:34
Date: Tue, 15 Nov 2011 14:34
20 lines
1623 bytes
1623 bytes
epsilon$ while read LINE; do echo \>"$LINE"; done < "hubert depesz lubaczewski" >ok. a jak teraz dostać dokumentację do tego "Message"? to jest >problemem, nie samo message_from_file, tylko dokumentacja do tego co ta >funkcja zwraca - czyli klasy "Message". > >aby było jasne - ja tę dokumentację znalazłem (a dokładniej to na >#python na ircu mi pokazali), ale chodzi mi o algorytm jak z powyższego >się domyślić, że muszę: >1. import email.message >2. help( email.message.Message ) W ipythonie - najpierw import email.message, potem email.message<Tab> i ewentualnie pytanie przez ? o konkretne składowe. Albo ja nie rozumiem pytania. -- \------------------------/ | Kruk@epsilon.eu.org | | http://epsilon.eu.org/ | /------------------------\
Re: Pytania początkującego cz. 3
Author: hubert depesz lubaczewski
Date: Tue, 15 Nov 2011 14:52
Date: Tue, 15 Nov 2011 14:52
31 lines
2120 bytes
2120 bytes
On 2011-11-15, Mariusz Kruk <Mariusz.Kruk@epsilon.eu.org> wrote:
> epsilon$ while read LINE; do echo \>"$LINE"; done < "hubert depesz lubaczewski"
>>ok. a jak teraz dostać dokumentację do tego "Message"? to jest
>>problemem, nie samo message_from_file, tylko dokumentacja do tego co ta
>>funkcja zwraca - czyli klasy "Message".
>>
>>aby było jasne - ja tę dokumentację znalazłem (a dokładniej to na
>>#python na ircu mi pokazali), ale chodzi mi o algorytm jak z powyższego
>>się domyślić, że muszę:
>>1. import email.message
>>2. help( email.message.Message )
>
> W ipythonie - najpierw import email.message, potem email.message<Tab> i
> ewentualnie pytanie przez ? o konkretne składowe.
> Albo ja nie rozumiem pytania.
ok. dane wejściowe:
1. mamy klasę "email".
2. w dokumentacji jest mowa o klasie "Message" (z dużej litery).
skąd mam wiedzieć, że:
1. "Message" to tak naprawdę "email.message.Message"
2. aby dostać doca do "email.message.Message" muszę zaimportować
email.message ?
depesz
--
The best thing about modern society is how easy it is to avoid contact with it.
http://depesz.com/
Re: Pytania początkującego cz. 3
Author: khonsu
Date: Tue, 15 Nov 2011 18:01
Date: Tue, 15 Nov 2011 18:01
79 lines
4142 bytes
4142 bytes
On Tue, 15 Nov 2011 02:22:49 +0100, hubert depesz lubaczewski
<depesz@depesz.com> wrote:
> 1. najpierw pytanie praktyczne. parsuję maila przy pomocy klasy/modułu
> email.
> dostałem maila, wyciągam z niego przez mail.get() zawartość nagłówka.
> ale nagłółek jest mime-encodowany.
> znalazłem, że mogę go sobie przez email.header.decode_header()
> zdekodować, ale dostaję z tego listę tupli, np. takich:
> [('Re: Instalacja PostgreSQL / post\xeapy', 'iso-8859-2')]
>
> jak mogę to zamienić na normalny string?
> tych tupli może być więcej, ale w docach nic nie znalazłem więcej.
>
> 2. jak można się połapać w dokumentacji? to pytanie takie bardziej
> ogólne, ale już tłumaczę.
> znalazłem moduł email.
> w docach do niego znalazłem informację o funkcji message_from_file
> fajnie. ale nie jest napisane co ona zwraca (obiekt jakiejś klasy, ale
> jakiej?). no nic. na sieci podpowiedzi, żeby zrobić print repr(obiekt)
> ok. dowiedziałem się, że jest to instancja email.message.Message
> fajnie.
> odpaliłem pythona, zrobiłem import email (taki sam jak mam w swoim
> programie), help( email.message.Message ) - i nie działa.
> znowu - na sieci podpowiedzieli, że muszę zrobić: import email.message,
> ale podobno nie jest regułą, że obcina się ostatni element z nazwy.
>
> tu pytanie: czy jest jakieś miejsce/metoda/algorytm/cokolwiek dzięki
> któremu mając "w ręku" obiekt mogę przeczytać do niego manuala - tzn. do
> jego klasy, bez zgadywania co muszę zaimportować?
>
> wiem, że powyższe brzmi marudnie, sorry, ale pytam całkiem serio - musi
> być przecież jakaś metoda by znaleźć odpowiednie doce, tylko ja jej nie
> widzę/nie znam.
>
> depesz
>
"email" to pakiet (package), natomiast: email.charset, email.encoders
,email.errors, email.generator, email.header, email.iterators,
email.message, email.mime, email.parser, email.utils, to konkretne
moduły/submoduły.
Pierwszy człon to nazwa pakietu, drugi to konkretny muduł/submoduł w tym
pakiecie email.message.Message to już konkretny obiekt tego modułu, w tym
przypadku klasa.
Żebyś mógł odwoływać się do tego konkretnego obiektu (Message), musisz do
lokalnej przestrzeni nazw zaimportować ten konkretny moduł w którym dany
obiekt się znajduje.
Robiąc tak: "import email.message" importujesz ten moduł, możesz więc
teraz dowolnie odwoływać się do jego obiektów za pomocą prefiksu będącego
nazwą modułu, czyli za pomocą "email.message".
Jeśli tego modułu wcześniej nie zaimportujesz to python nie będzie
wiedział o jaki obiekt ci chodzi i zgłosi "NameError", np:
>>> help(email.message.Message)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'email' is not defined
czego należało się spodziewać, jako że zmiennej o takiej nazwie nie ma, w
tej konkretnej przestrzeni nazw.
możesz też oszczędzić sobie walenia w klawiaturę i importować konkretny
obiekt tak:
>>> from email.message import Message
>>>help(Message)
co oszczędzi ci konieczności poprzedzania klasy Message nazwą podułu.
Pozdrawiam khonsu.
--- Posted via news://freenews.netfront.net/ - Complaints to news@netfront.net ---
Re: Pytania początkującego cz. 3
Author: Mariusz Kruk
Date: Tue, 15 Nov 2011 19:29
Date: Tue, 15 Nov 2011 19:29
38 lines
2342 bytes
2342 bytes
epsilon$ while read LINE; do echo \>"$LINE"; done < "hubert depesz lubaczewski" >>>ok. a jak teraz dostać dokumentację do tego "Message"? to jest >>>problemem, nie samo message_from_file, tylko dokumentacja do tego co ta >>>funkcja zwraca - czyli klasy "Message". >>> >>>aby było jasne - ja tę dokumentację znalazłem (a dokładniej to na >>>#python na ircu mi pokazali), ale chodzi mi o algorytm jak z powyższego >>>się domyślić, że muszę: >>>1. import email.message >>>2. help( email.message.Message ) >> >> W ipythonie - najpierw import email.message, potem email.message<Tab> i >> ewentualnie pytanie przez ? o konkretne składowe. >> Albo ja nie rozumiem pytania. > >ok. dane wejściowe: >1. mamy klasę "email". >2. w dokumentacji jest mowa o klasie "Message" (z dużej litery). > >skąd mam wiedzieć, że: > >1. "Message" to tak naprawdę "email.message.Message" Szczerze mówiąc, nie przypominam sobie, żebym się spotkał z odwołaniem do zupełnie innego pakietu (pomijając oczywiście obiekty standardowe). Ale jeśli, w takim wypadku spodziewałbym się odwołania do pełnej ścieżki właśnie. >2. aby dostać doca do "email.message.Message" muszę zaimportować >email.message ? No, z jakiegoś pakietu ta klasa się wzięła, nieprawdaż? :-) -- \------------------------/ | Kruk@epsilon.eu.org | | http://epsilon.eu.org/ | /------------------------\
Re: Pytania początkującego cz. 3
Author: hubert depesz lubaczewski
Date: Tue, 15 Nov 2011 19:45
Date: Tue, 15 Nov 2011 19:45
37 lines
2272 bytes
2272 bytes
On 2011-11-15, Mariusz Kruk <Mariusz.Kruk@epsilon.eu.org> wrote:
>>ok. dane wejściowe:
>>1. mamy klasę "email".
>>2. w dokumentacji jest mowa o klasie "Message" (z dużej litery).
>>
>>skąd mam wiedzieć, że:
>>
>>1. "Message" to tak naprawdę "email.message.Message"
>
> Szczerze mówiąc, nie przypominam sobie, żebym się spotkał z odwołaniem
> do zupełnie innego pakietu (pomijając oczywiście obiekty standardowe).
> Ale jeśli, w takim wypadku spodziewałbym się odwołania do pełnej ścieżki
> właśnie.
tak, ale skąd mam wiedzieć, że to jest email.message.Message, a nie np.
email.msg.Message, albo email.Message.Message, albo
email.foobar.Message?
>>2. aby dostać doca do "email.message.Message" muszę zaimportować
>>email.message ?
> No, z jakiegoś pakietu ta klasa się wzięła, nieprawdaż? :-)
ok. czy zawsze mając pełną nazwę klasy, to co muszę importować biorę z
nazwy klasy, bez ostatniego elementu?
tzn. gdybym miał klasę:
world.europe.poland.warsaw.depesz.python
to do importowania na 100% byłby
world.europe.poland.warsaw.depesz
?
depesz
--
The best thing about modern society is how easy it is to avoid contact with it.
http://depesz.com/
Re: Pytania początkującego cz. 3
Author: khonsu
Date: Tue, 15 Nov 2011 20:27
Date: Tue, 15 Nov 2011 20:27
63 lines
3459 bytes
3459 bytes
On Tue, 15 Nov 2011 20:45:55 +0100, hubert depesz lubaczewski
<depesz@depesz.com> wrote:
> On 2011-11-15, Mariusz Kruk <Mariusz.Kruk@epsilon.eu.org> wrote:
>>> ok. dane wejściowe:
>>> 1. mamy klasę "email".
>>> 2. w dokumentacji jest mowa o klasie "Message" (z dużej litery).
>>>
>>> skąd mam wiedzieć, że:
>>>
>>> 1. "Message" to tak naprawdę "email.message.Message"
>>
>> Szczerze mówiąc, nie przypominam sobie, żebym się spotkał z odwołaniem
>> do zupełnie innego pakietu (pomijając oczywiście obiekty standardowe).
>> Ale jeśli, w takim wypadku spodziewałbym się odwołania do pełnej ścieżki
>> właśnie.
>
> tak, ale skąd mam wiedzieć, że to jest email.message.Message, a nie np.
> email.msg.Message, albo email.Message.Message, albo
> email.foobar.Message?
>
>>> 2. aby dostać doca do "email.message.Message" muszę zaimportować
>>> email.message ?
>> No, z jakiegoś pakietu ta klasa się wzięła, nieprawdaż? :-)
>
> ok. czy zawsze mając pełną nazwę klasy, to co muszę importować biorę z
> nazwy klasy, bez ostatniego elementu?
>
> tzn. gdybym miał klasę:
> world.europe.poland.warsaw.depesz.python
> to do importowania na 100% byłby
> world.europe.poland.warsaw.depesz
>
> ?
>
> depesz
>
Operator "kropkowy" to odwołanie do atrybutu obiektu (pola, metody, etc.).
To jest zależne od tego co chcesz uzyskać, jeśli chcesz mieć klasę z
jakiejś biblioteki, to oczywiste że musisz tę bibliotekę zaimportować.
Odwoływanie się do obiektów w modułach wygląda tak samo jak dostęp do
atrybutów innych obiektów, w pythonie wszystko jest obiektem.
Tak więc:
email.message.Message
^ ^ ^
pakiet email ---+ | +--- Twój obiekt (klasa Message)
moduł message
Jeśli world to moduł to europe.poland.warsaw.depesz, będzie jakimś
obiektem tego modułu, i wystarczy że zaimportujesz tylko world.
Jeśli world to pakiet a europe to submoduł, to żeby dostać się do
poland.warsaw.depesz musisz zaimportować world.europe.
Jeśli email to obiekt w twojej przestrzeni nazw, to nic nie musisz
importować.
W ogóle wydaje mi się że nie rozumiesz, struktury biblioteki standardowej
pythona, wszystko co nie jest "core python" musisz sobie zaimportować.
--- Posted via news://freenews.netfront.net/ - Complaints to news@netfront.net ---
Re: Pytania początkującego cz. 3
Author: hubert depesz lubaczewski
Date: Tue, 15 Nov 2011 20:40
Date: Tue, 15 Nov 2011 20:40
29 lines
2329 bytes
2329 bytes
On 2011-11-15, khonsu <fkhonsu@gmail.com> wrote:
> Operator "kropkowy" to odwołanie do atrybutu obiektu (pola, metody, etc.).
> To jest zależne od tego co chcesz uzyskać, jeśli chcesz mieć klasę z
> jakiejś biblioteki, to oczywiste że musisz tę bibliotekę zaimportować.
> Odwoływanie się do obiektów w modułach wygląda tak samo jak dostęp do
> atrybutów innych obiektów, w pythonie wszystko jest obiektem.
>
> Tak więc:
> email.message.Message
> ^ ^ ^
> pakiet email ---+ | +--- Twój obiekt (klasa Message)
> moduł message
>
>
> Jeśli world to moduł to europe.poland.warsaw.depesz, będzie jakimś
> obiektem tego modułu, i wystarczy że zaimportujesz tylko world.
> Jeśli world to pakiet a europe to submoduł, to żeby dostać się do
> poland.warsaw.depesz musisz zaimportować world.europe.
> Jeśli email to obiekt w twojej przestrzeni nazw, to nic nie musisz
> importować.
aaaargh. a skąd mam wiedzieć czy "world" to moduł, czy pakiet, czy
jeszcze coś innego?
depesz
--
The best thing about modern society is how easy it is to avoid contact with it.
http://depesz.com/
Re: Pytania początkującego cz. 3
Author: Grzegorz Staniak
Date: Tue, 15 Nov 2011 20:52
Date: Tue, 15 Nov 2011 20:52
64 lines
3725 bytes
3725 bytes
On 15.11.2011, hubert depesz lubaczewski <depesz@depesz.com> wroted:
>>>ok. dane wejściowe:
>>>1. mamy klasę "email".
>>>2. w dokumentacji jest mowa o klasie "Message" (z dużej litery).
>>>
>>>skąd mam wiedzieć, że:
>>>
>>>1. "Message" to tak naprawdę "email.message.Message"
>>
>> Szczerze mówiąc, nie przypominam sobie, żebym się spotkał z odwołaniem
>> do zupełnie innego pakietu (pomijając oczywiście obiekty standardowe).
>> Ale jeśli, w takim wypadku spodziewałbym się odwołania do pełnej ścieżki
>> właśnie.
>
> tak, ale skąd mam wiedzieć, że to jest email.message.Message, a nie np.
> email.msg.Message, albo email.Message.Message, albo
> email.foobar.Message?
[~]$ python
>>> import email
>>> help(email)
[...]
>>> dir(email)
['Charset', 'Encoders', 'Errors', 'FeedParser', 'Generator',
'Header', 'Iterators', 'LazyImporter', 'MIMEAudio', 'MIMEBase',
'MIMEImage', 'MIMEMessage', 'MIMEMultipart', 'MIMENonMultipart',
'MIMEText', 'Message', 'Parser', 'Utils', '_LOWERNAMES',
'_MIMENAMES', '__all__', '__builtins__', '__doc__', '__file__',
'__name__', '__package__', '__path__', '__version__', '_name',
'_parseaddr', 'base64MIME', 'base64mime', 'charset', 'email',
'encoders', 'errors', 'feedparser', 'generator', 'header',
'importer', 'iterators', 'message', 'message_from_file',
'message_from_string', 'mime', 'parser', 'quopriMIME', 'quoprimime',
'sys', 'utils']
>>> help(email.message)
[...]
>>> dir(email.message)
['Message', 'SEMISPACE', 'StringIO', '__all__', '__builtins__',
'__doc__', '__file__', '__name__', '__package__', '_formatparam',
'_parseparam', '_splitparam', '_unquotevalue', 'binascii', 'email',
'errors', 're', 'tspecials', 'utils', 'uu', 'warnings']
>>> dir(email.message.Message)
['__contains__', '__delitem__', '__doc__', '__getitem__',
'__init__', '__len__', '__module__', '__setitem__', '__str__',
_get_params_preserve', 'add_header', 'as_string', 'attach',
del_param', 'get', 'get_all', 'get_boundary', 'get_charset',
get_charsets', 'get_content_charset', 'get_content_maintype',
get_content_subtype', 'get_content_type', 'get_default_type',
get_filename', 'get_param', 'get_params', 'get_payload',
get_unixfrom', 'has_key', 'is_multipart', 'items', 'keys',
replace_header', 'set_boundary', 'set_charset', 'set_default_type',
set_param', 'set_payload', 'set_type', 'set_unixfrom', 'values',
walk']
>>> help(email.message.Message)
itd.
dir() robi inspekcję i melduje co jest w środku, wybierasz i wołasz
help() i tak w głąb.
GS
--
Grzegorz Staniak <gstaniak _at_ gmail [dot] com>
Re: Pytania początkującego cz. 3
Author: Piotr Chamera
Date: Wed, 16 Nov 2011 09:32
Date: Wed, 16 Nov 2011 09:32
78 lines
3255 bytes
3255 bytes
W dniu 2011-11-15 21:40, hubert depesz lubaczewski pisze:
> On 2011-11-15, khonsu<fkhonsu@gmail.com> wrote:
>> Operator "kropkowy" to odwołanie do atrybutu obiektu (pola, metody, etc.).
>> To jest zależne od tego co chcesz uzyskać, jeśli chcesz mieć klasę z
>> jakiejś biblioteki, to oczywiste że musisz tę bibliotekę zaimportować.
>> Odwoływanie się do obiektów w modułach wygląda tak samo jak dostęp do
>> atrybutów innych obiektów, w pythonie wszystko jest obiektem.
>>
>> Tak więc:
>> email.message.Message
>> ^ ^ ^
>> pakiet email ---+ | +--- Twój obiekt (klasa Message)
>> moduł message
>>
>>
>> Jeśli world to moduł to europe.poland.warsaw.depesz, będzie jakimś
>> obiektem tego modułu, i wystarczy że zaimportujesz tylko world.
>> Jeśli world to pakiet a europe to submoduł, to żeby dostać się do
>> poland.warsaw.depesz musisz zaimportować world.europe.
>> Jeśli email to obiekt w twojej przestrzeni nazw, to nic nie musisz
>> importować.
>
> aaaargh. a skąd mam wiedzieć czy "world" to moduł, czy pakiet, czy
> jeszcze coś innego?
Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit
(Intel)] on win32
>>> import email
>>> help(email)
Help on package email:
NAME
email - A package for parsing, handling, and generating email messages.
FILE
c:\programy\python2.5\lib\email\__init__.py
PACKAGE CONTENTS
_parseaddr
base64mime
charset
encoders
errors
feedparser
generator
header
iterators
message
mime (package)
parser
quoprimime
test (package)
utils
(...)
>>> help(email.message)
Help on module email.message in email:
NAME
email.message - Basic message object for the email package object
model.
FILE
c:\programy\python2.5\lib\email\message.py
CLASSES
Message
(...)
>>> help(email.message.Message)
Help on class Message in module email.message:
class Message
| Basic message object.
(...)
Re: Pytania początkującego cz. 3
Author: Piotr Chamera
Date: Wed, 16 Nov 2011 09:38
Date: Wed, 16 Nov 2011 09:38
41 lines
2645 bytes
2645 bytes
W dniu 2011-11-16 10:32, Piotr Chamera pisze: > W dniu 2011-11-15 21:40, hubert depesz lubaczewski pisze: >> On 2011-11-15, khonsu<fkhonsu@gmail.com> wrote: >>> Operator "kropkowy" to odwołanie do atrybutu obiektu (pola, metody, >>> etc.). >>> To jest zależne od tego co chcesz uzyskać, jeśli chcesz mieć klasę z >>> jakiejś biblioteki, to oczywiste że musisz tę bibliotekę zaimportować. >>> Odwoływanie się do obiektów w modułach wygląda tak samo jak dostęp do >>> atrybutów innych obiektów, w pythonie wszystko jest obiektem. >>> >>> Tak więc: >>> email.message.Message >>> ^ ^ ^ >>> pakiet email ---+ | +--- Twój obiekt (klasa Message) >>> moduł message >>> >>> >>> Jeśli world to moduł to europe.poland.warsaw.depesz, będzie jakimś >>> obiektem tego modułu, i wystarczy że zaimportujesz tylko world. >>> Jeśli world to pakiet a europe to submoduł, to żeby dostać się do >>> poland.warsaw.depesz musisz zaimportować world.europe. >>> Jeśli email to obiekt w twojej przestrzeni nazw, to nic nie musisz >>> importować. >> >> aaaargh. a skąd mam wiedzieć czy "world" to moduł, czy pakiet, czy >> jeszcze coś innego? > > Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit > (Intel)] on win32 > > >>> import email (...) albo tak (jeżeli potrzebujesz tylko typ obiektu): >>> type(email.message.Message) <type 'classobj'> >>> type(email.message) <type 'module'> >>> type(email) <type 'module'>
Re: Pytania początkującego cz. 3
Author: hubert depesz lubaczewski
Date: Wed, 16 Nov 2011 11:06
Date: Wed, 16 Nov 2011 11:06
18 lines
1627 bytes
1627 bytes
On 2011-11-16, Piotr Chamera <piotr_chamera@poczta.onet.pl> wrote:
> albo tak (jeżeli potrzebujesz tylko typ obiektu):
> >>> type(email.message.Message)
><type 'classobj'>
>
> >>> type(email.message)
><type 'module'>
>
> >>> type(email)
><type 'module'>
dzięki (i za ten, i za drugi post). chyba wszystko jasne.
depesz
--
The best thing about modern society is how easy it is to avoid contact with it.
http://depesz.com/
Re: Pytania początkującego cz. 3
Author: Artur M. Piwko
Date: Thu, 17 Nov 2011 07:27
Date: Thu, 17 Nov 2011 07:27
23 lines
1700 bytes
1700 bytes
In the darkest hour on Tue, 15 Nov 2011 15:09:02 +0100,
hubert depesz lubaczewski <depesz@depesz.com> screamed:
>> # import email.message
>> # dir(email.message.Message)
>> # email.message.Message?
>> # email.message.Message??
>
> ok. ale skąd wiadomo, że muszę zrobić ten import?
> tzn. konkretnie ten, email.message.
>
> i czy jak klasa będzie się nazywała a.b.c.d.e.f
> to muszę zrobić zawsze import a.b.c.d.e (czyli nazwa klasy bez
> ostatniego elementu)?
>
A skąd wiesz jakiego use (czy jak tam się to nazywa) w perlu użyć?
Np. http://docs.python.org/modindex.html
--
[ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:218B ]
[ 08:26:54 user up 12989 days, 20:21, 1 user, load average: 0.00, 0.18, 0.19 ]
Portable: Survives system reboot.
Re: Pytania początkującego cz. 3
Author: hubert depesz lubaczewski
Date: Thu, 17 Nov 2011 11:57
Date: Thu, 17 Nov 2011 11:57
20 lines
1742 bytes
1742 bytes
On 2011-11-17, Artur M. Piwko <milusi.pysiaczek@buziaczek.pl> wrote:
> A skąd wiesz jakiego use (czy jak tam się to nazywa) w perlu użyć?
> Np. http://docs.python.org/modindex.html
ale w perlu doce mam dostępne od razu z shella perldocem.
i nie mam technicznie potrzeby ładowania klas które odpowiadają obiektom
zrobionym przez inne klasy.
tzn. jak mam klasę HTML::TreeBuilder która zwraca HTML::Element, to aby
przeczytać doce do HTML::Element po prostu robię perldoc HTML::Element.
Tu tak nie było, bo klasa "email" zwróciła obiekt klasy "Message", a
pełna nazwa klasy była potrzebna by help() w pythonie zadziałał.
depesz
--
The best thing about modern society is how easy it is to avoid contact with it.
http://depesz.com/
Re: Pytania początkującego cz. 3
Author: Adam Przybyla
Date: Thu, 17 Nov 2011 12:15
Date: Thu, 17 Nov 2011 12:15
18 lines
1870 bytes
1870 bytes
hubert depesz lubaczewski <depesz@depesz.com> wrote: > On 2011-11-17, Artur M. Piwko <milusi.pysiaczek@buziaczek.pl> wrote: >> A skąd wiesz jakiego use (czy jak tam się to nazywa) w perlu użyć? >> Np. http://docs.python.org/modindex.html > > ale w perlu doce mam dostępne od razu z shella perldocem. > > i nie mam technicznie potrzeby ładowania klas które odpowiadają obiektom > zrobionym przez inne klasy. > > tzn. jak mam klasę HTML::TreeBuilder która zwraca HTML::Element, to aby > przeczytać doce do HTML::Element po prostu robię perldoc HTML::Element. > > Tu tak nie było, bo klasa "email" zwróciła obiekt klasy "Message", a > pełna nazwa klasy była potrzebna by help() w pythonie zadziałał. ... tu nie ma pojedynczego repozytorium pakietow, dlatego nie ma od razu pelnej dokumentacji. Sorry. Cos za cos. Z powazaniem Adam Przybyla
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads