Python - czy powinienem umieszczać funkcje pomocnicze wewnątrz czy poza klasą?
W Pythonie, jeśli niektóre metody klasy potrzebują funkcji helpera, ale sama funkcja helper nie używa niczego w klasie, czy powinienem umieścić funkcję helper wewnątrz lub na zewnątrz klasy?
Próbowałem umieścić go w środku, ale pylint narzekał, że ta funkcja mogła być umieszczona na zewnątrz.
@ Karl:
Klasa jest uaktualniaczem oprogramowania, a funkcja pomocnicza tworzy nowy folder, jeśli folder jeszcze nie istnieje. Klasa jest w module posiadającym prawie na razie tylko kod dla klasy. Inne klasy mogą być dodane później.
2 answers
Decydując, gdzie umieścić funkcje pomocnicze, zadaję sobie pytanie :" czy jest to tylko dla tej klasy?"Jeśli może pomóc w innych miejscach, to idzie na poziom modułu; jeśli rzeczywiście jest tylko dla tej klasy, to idzie do klasy z staticmethod
(nie potrzebuje danych klasy do wykonania swojego zadania) lub classmethod
(używa jakiejś klasy, ale nie instancji, danych do wykonania swojego zadania).
Kolejnym sprawdzaczem kodu Pythona jest pyflakes .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-21 22:07:55
Możliwe, że funkcja pomocnicza lepiej pasuje do poziomu modułu niż klasy.
Jeśli nie zgadzasz się, że tak jest, istnieje dekorator staticmethod , którego możesz użyć na funkcjach wewnątrz klasy. Mówiąc najprościej, statyczna metoda zachowuje się tak samo pomiędzy instancjami obiektów tej samej klasy. Nie opiera się na danych instancji.
Z tego powodu dekorator staticmethod
renderuje zachowanie na funkcji tak, że nie przyjmuje implicit pierwszy argument (typowo self
), Jak podano w dokumentacji).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-21 21:12:57