Это хорошая идея - использовать класс в качестве пространства имен в Python

Я помещаю кучу связанных вещей в класс. Основная цель - организовать их в пространство имен.

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

25
задан Ian 11 November 2019 в 16:41
поделиться

2 ответа

№. Вместо этого вставьте его в модуль.

В Python нет пространств имен, как в C++, но модули служат примерно той же цели (то есть группируют вместе «похожие» классы и функции и дают им уникальные имена во избежание конфликтов).

Изменить
Я видел комментарий, который вы разместили на свой вопрос. Чтобы ответить более явно, нет, в коде Pythonic не совсем правильно использовать класс для эмуляции пространства имен. Модули предназначены для группировки связанных классов, функций и переменных — вместо этого используйте модуль. Класс представляет собой «вещь», которая имеет поведение (методы) и данные (переменные экземпляра) — это не просто набор автономных функций и переменных.

14
ответ дан 28 November 2019 в 21:39
поделиться

Да, все в порядке. Вы даже можете использовать свойство, чтобы методы выглядели как атрибуты.

Если у вас большой класс, лучше использовать модуль

2
ответ дан 28 November 2019 в 21:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: