2015-09-11 2 views
1

У меня есть следующий Helper.py Python скриптПайтона использования пространств имен

class Helper: 
# Helper has many many classes! (AA, BB, CC, DD, ....) not just 2! 
    class AA: 
     CMD_AA = '8' 
     CMD_AB = '1' 

    class BB: 
     CMD_BA = '0' 
     CMD_BB = '1' 

Я создал этот вспомогательный файл, чтобы сделать код более читаемым. Так можно это написать;

# this usage is more readable and makes sense 
cmd.a = AA.CMD_AB 
cmd.b = BB.CMD_BB 

# instead of some thing like this where no one knows 
# what 1 is interms of a or b!! 
cmd.a = 1 
cmd.b = 1 

Вспомогательный скрипт импортируется во многие файлы python! И единственный способ, которым я знаю, как использовать его как таковой

from Helper import * 
cmd.a = Helper.AA.CMD_AA # instead of cmd.a = 8 
cmd.b = Helper.BB.CMD_BB # instead of cmd.b = 1 

Есть ли способ избавиться от «Помощника». Я уже добавляю больше ввода текста. Так будет выглядеть;

from Helper import * 

#in C++ u can use something like using namespace Helper; 
cmd.a = AA.CMD_AA # instead of cmd.a = 8 
cmd.b = BB.CMD_BB # instead of cmd.b = 1 

ответ

3

вы должны просто удалить класс обертки Helper и dedent остальной части файла ... сам файл содержит пространство имен, если вы хотите

Helper.py

class CMD_AA: 
    ... 

основным .py

import Helper 
Helper.CMD_AA 
# or just 
from Helper import CMD_AA 
+1

Действительно, с этим предлагаемым изменением эквивалент 'using namespace Helper' будет' from Helper import * '. (Вы пробовали это раньше, Сайо, но у вас были * две вещи, названные Helper: файл модуля и класс внутри этого файла.) Импорт '*' не рекомендуется в Python так же, как 'using namespace' находится в C++. –

+0

Спасибо, ребята, за помощь здесь. @RobKennedy, я определенно попробовал ** из импорта Helper * ** (как показано выше в вопросе), но не знал, что мне не нужно имя внешнего класса, как указано Джораном, который добавил дополнительную сложность. – sayo9394