Klasy a moduły w Pythonie


19

Python ma wiele modułów (takich jak re), które wykonują określony zestaw akcji. Możesz wywoływać funkcje tego modułu i uzyskiwać wyniki, a moduł jako całość ma za sobą pomysł (w tym przypadku dotyczy wyrażeń regularnych).

Klasy wydają się robić dokładnie to samo, ale wydają się również używać właściwości nieco więcej niż modułów.

W jaki sposób moduły różnią się od klas? (Wiem, że nie mogę podklasować modułu, ale czy to jest to?) Kiedy powinienem użyć klasy zamiast modułu?


Czy zdajesz sobie sprawę, że kiedy wywołujesz metody modułowe, czasami moduł po prostu przechodzi do instancji klasy? Zobacz na przykład randommoduł. Nie pamiętam jednak, czy to prawda re.
jscs,

1
Powiązana koncepcja wiedzieć - moduł vs. pakiet?
RBT,

Odpowiedzi:


12

Moduł python to nic innego jak pakiet do enkapsulacji kodu wielokrotnego użytku. Moduły zwykle, ale nie zawsze, znajdują się w folderze, w którym znajduje się __init__.pyplik. Moduły mogą zawierać funkcje, ale także klasy. Moduły są importowane za pomocą importsłowa kluczowego.

Python ma sposób na umieszczenie definicji w pliku i użycie ich w skrypcie lub w interaktywnej instancji interpretera. Taki plik nazywa się modułem; definicje z modułu można importować do innych modułów lub do modułu głównego.

Dowiedz się więcej o modułach Python pod tymi linkami:

https://docs.python.org/2/tutorial/modules.html (Python 2) https://docs.python.org/3/tutorial/modules.html (Python 3)

Z drugiej strony, klasy można zdefiniować w głównym kodzie aplikacji lub w modułach zaimportowanych przez aplikację. Klasy są kodowaniem programowania obiektowego i mogą zawierać właściwości i metody.

Dowiedz się więcej o klasach Python pod tymi linkami:

https://docs.python.org/2/tutorial/classes.html (Python 2) https://docs.python.org/3/tutorial/classes.html (Python 3)


3
Więc nie jest źle mieć jedną klasę w module, nawet jeśli ta klasa ma tylko funkcje? Wydaje mi się, że w takiej sytuacji powinienem po prostu zrobić moduł bez tworzenia klasy. Czy istnieje podstawowa zasada określająca, kiedy używać klas zamiast modułów? (Właśnie o to próbuję zapytać ... Czy powinienem edytować moje pytanie, aby było bardziej jasne?)
Pro Q

6
Możesz utworzyć wiele wystąpień klasy, ale nie możesz utworzyć wystąpień modułu. Możesz porównać moduły do ​​klas statycznych lub singletonów.
Eneko Alonso

1
Moduły nie zawsze znajdują się w folderze z __init__.pyplikiem.
multigoodverse

1
@ProQ W językach takich jak Python, gdzie można mieć funkcje w modułach, a nie w klasach (w przeciwieństwie do, powiedzmy, Java), ogólnie dobrą formą jest utrzymywanie funkcji statycznych na poziomie modułu. Klasy implikują przypadki z własnym stanem.
Turksarama,

-2

Jeśli jest to garść czystych funkcji, np. reUmieszczam je w module. Korzystam z klasy, gdy wiem, że istnieje stan, który chcę zachować z tym kodem (np. Plik, który jest wczytywany raz, ale którego dane są używane przez kilka funkcji).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.