Здравствуйте, monax, Вы писали:
RO>>а по-человечески?
M>В питоне для таких целей используются модули.
Вот пусть у тебя есть отдельный модуль, в котором описывается какая-нибудь грамматика, для чего требуется куча идентификаторов, большинство из которых определяются в одну строчку. Чтобы они не конфликтовали, надо их разнести по отдельным пространствам имен, но заводить на каждый чих отдельный файл было бы неудобно.
Здравствуйте, Roman Odaisky, Вы писали:
RO>Можно было бы написать class grammar, но тогда функции не будут видеть ранее определенные идентификаторы.
Почему не будут? К переменным класса (статические переменные) можно обращаться с помощью имени класса (MyClass.myVar), либо через self, если используем объект. Если объект не создаём, то методы делать статическими.
Здравствуйте, Roman Odaisky, Вы писали:
RO>Вот пусть у тебя есть отдельный модуль, в котором описывается какая-нибудь грамматика, для чего требуется куча идентификаторов, большинство из которых определяются в одну строчку. Чтобы они не конфликтовали, надо их разнести по отдельным пространствам имен, но заводить на каждый чих отдельный файл было бы неудобно.
Пока что на ум приходит dict, но хотелось бы увидеть реальный кусок кода, который ты хочешь запихнуть в namespace. Тут и классы вполне подходят, а названная тобой проблема с видимостью мне вообще непонятна. В общем, "Talk is cheap. Show me the code." (c).
Здравствуйте, monax, Вы писали:
RO>>Вот пусть у тебя есть отдельный модуль, в котором описывается какая-нибудь грамматика, для чего требуется куча идентификаторов, большинство из которых определяются в одну строчку. Чтобы они не конфликтовали, надо их разнести по отдельным пространствам имен, но заводить на каждый чих отдельный файл было бы неудобно.
M>Пока что на ум приходит dict, но хотелось бы увидеть реальный кусок кода, который ты хочешь запихнуть в namespace. Тут и классы вполне подходят, а названная тобой проблема с видимостью мне вообще непонятна. В общем, "Talk is cheap. Show me the code." (c).
В первом сообщении вполне себе репрезентативный кусок кода, который не будет работать внутри класса (например, seq не увидит P).
Здравствуйте, Roman Odaisky, Вы писали:
RO>В первом сообщении вполне себе репрезентативный кусок кода, который не будет работать внутри класса (например, seq не увидит P).