Я помещаю кучу связанных вещей в класс. Основная цель - организовать их в пространство имен.
class Direction:
north = 0
east = 1
south = 2
west = 3
@staticmethod
def turn_right(d):
return turn_to_the_right
@staticmethod
def turn_left(d):
return turn_to_the_left
# defined a short alias because direction will be used a lot
D = Direction
d0 = D.north
d1 = D.turn_right(d)
Здесь не так уж много концепции объекта. В C ++ я буду использовать собственное ключевое слово языка пространство имен
. В Python такого нет. Я пытаюсь использовать для этой цели класс
.
Это хорошая идея? Есть ли ловушка с этим подходом?
Я только что ответил на связанный с этим вопрос вчера. Этот вопрос задается иначе. Это реальное решение, которое мне нужно принять для себя.
Статический метод и функция модуля в python - Stack Overflow
№. Вместо этого вставьте его в модуль.
В Python нет пространств имен, как в C++, но модули служат примерно той же цели (то есть группируют вместе «похожие» классы и функции и дают им уникальные имена во избежание конфликтов).
Изменить
Я видел комментарий, который вы разместили на свой вопрос. Чтобы ответить более явно, нет, в коде Pythonic не совсем правильно использовать класс для эмуляции пространства имен. Модули предназначены для группировки связанных классов, функций и переменных — вместо этого используйте модуль. Класс представляет собой «вещь», которая имеет поведение (методы) и данные (переменные экземпляра) — это не просто набор автономных функций и переменных.
Да, все в порядке. Вы даже можете использовать свойство
, чтобы методы выглядели как атрибуты.
Если у вас большой класс, лучше использовать модуль