Python docstring musi być podany jako łańcuch literowy; ale czasami przydatne jest posiadanie podobnych docstrukcji dla kilku funkcji (np. różnych konstruktorów) lub kilka metod dostępu może akceptować tę samą listę argumentów (a następnie polegać na tej samej ukrytej metodzie), więc byłoby miło użyć tego samego opis wszędzie. W takich przypadkach mogę skonstruować docstring przez przypisanie do __doc__
, co robię za pomocą prostego dekoratora. System działa bardzo ładnie (w python 2) i jestem zadowolony z tego, jak prosty, przejrzysty i dobrze zamknięty jest.Modyfikowanie języka Pythona z dekoratorem: czy to dobry pomysł?
Pytanie: Czy to dobry pomysł? W szczególności, czy istnieją narzędzia, które mogłyby zostać zdezorientowane przez tę konfigurację (np. Wszystko, co wyodrębnia docstrukcje ze źródła, a nie z kodu bajtowego). Czy rozwiązanie nadal będzie działało w Pythonie 3? Czy istnieją inne przyczyny lub okoliczności, które sprawiają, że jest to niewskazane?
"różnych konstruktorów"? Zakładam, że masz na myśli pewne funkcje fabryczne, ponieważ możesz mieć tylko jedno '__init__'. –
Nie uważam, że "funkcja fabryczna" jest właściwa. Miałem na myśli statycznych członków klasy, które tworzą instancję tej samej klasy. Wszyscy byliby polimorficznymi konstruktorami w języku, który obsługuje to bezpośrednio. Ale tak, funkcje fabryczne mogą być kolejnym przypadkiem użycia. – alexis
Uważałbym, że to rodzaj fabryki, tak. Nie ma żadnej różnicy pomiędzy statycznymi funkcjami członków i darmowymi funkcjami (do używania terminologii C++), oprócz przestrzeni nazw. Chociaż Python ma oddzielne pojęcia "metody klasy" i "metody statycznej". –