wazer | 2021-02-17 10:25:21 UTC | #1
dlaczego po zaimportowaniu datetime z datetime nie działa datetime.datetime.today()
ten problem nie pojawia się przy getcwd()
>>> import datetime
>>> datetime.datetime.today()
datetime.datetime(2020, 11, 25, 18, 31, 43, 228326)
>>> from datetime import datetime
>>> datetime.today()
datetime.datetime(2020, 11, 25, 18, 31, 58, 838495)
>>> datetime.datetime.today()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: type object 'datetime.datetime' has no attribute 'datetime'
>>> import os
>>> os.getcwd()
'C:\\Users'
>>> getcwd()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'getcwd' is not defined
>>> from os import getcwd
>>> getcwd()
>>> os.getcwd()
'C:\\Users'
>>>
Pantoflarz | 2020-11-28 17:51:54 UTC | #2
Nie wiem do końca jak to poprawnie wytłumaczyć w języku polskim, gdyż przywykłem do tłumaczenia w języku angielskim, ale postaram się objaśnić co jest problemem.
Gdy importujesz datetime -
[quote=”wazer, post:1, topic:16894”]
import datetime
[/quote]
importujesz tzw. moduł.
Za chwilę, robiąc
[quote=”wazer, post:1, topic:16894”]
from datetime import datetime
[/quote]
importujesz klasę.
Więc to co Python robi to nie błąd, robi dokładnie to co mu kazałeś, a że nazwa tego co importujesz jest taka sama, to prawidłowo zwraca że obiekt nie ma atrybutu datetime.
Najprostszym fixem, w takiej sytuacji, jest zmiana nazewnictwa importów, np. możesz zrobić po prostu -
import datetime as dt
i używać modułu datetime używając zmiennej dt
a potem
from datetime import datetime
i używać klasy datetime używając zmienniej datetime
Przynajmniej tak rozumiem to co się tutaj dzieje, i sądzę że to mogłoby pomóc :slight_smile:
Po co wogóle komplikujesz sobie na tyle życie jest dla mnie zagadką, bo można po prostu nie robić import datetime from datetime
i używając samego dt
, kod dt.datetime.now()
zwróci Ci aktualną datę i godzinę :)
wazer | 2020-11-28 17:51:07 UTC | #3
Dzięki za wytłumaczenie :slightlysmilingface:
[quote=”Pantoflarz, post:2, topic:16894”]
import datetime as dt
[/quote]
o tym że da się zmienić nazwę modułu nie wiedziałem
[quote=”Pantoflarz, post:2, topic:16894”]
Po co wogóle komplikujesz sobie na tyle życie jest dla mnie zagadką, bo można po prostu nie robić import datetime from datetime
i używając samego dt
, kod dt.datetime.now()
zwróci Ci aktualną datę i godzinę
[/quote]
Byłem ciekawy co się stanie .....
system | 2021-02-17 10:31:44 UTC | #4
Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.