Форум сайта python.su
44
эээ … в общем есть билиотека в ней несколько переменных, классов и функций что то вроде
...
def main():
code
if __name__ == '__main__':
main()
и вставьте ссылку на его url Отредактировано AD0DE412 (Июль 1, 2019 00:04:27)
Офлайн
253
AD0DE412Постарайтесь внятно изложить что вам нужно.
эээ …
AD0DE412А кто вас заставляет импортировать функцию main? Вызываться она у вас при импорте не будет. По идее можно сделать почти что угодно, но только зачем? Если нужна разная инициализация то
изменить ее работу, после импорта или импортировать модуль с исключение этой функции. как это сделать?
if __name__ == '__main__': main() else: other_main()
Офлайн
44
спасибо за ответ
в общем вопрос в следуещем
есть просто импорт всего модуля при помощи import module
есть импорт имен из модуля from module import name или
from module import *
итд
а можно подключить модуль с исключением некоторых имен
т.е. звездачка (*) в конструкции from module import * означает импортировать все имена,
возможно ли использовать другую конструкцию дающую в резульнате импорт всех имен за исключением некоторых имен что то вроде
from module import * (плюс что то исключающее определенное имя)
и вставьте ссылку на его url Отредактировано AD0DE412 (Июль 1, 2019 11:21:02)
Офлайн
568
AD0DE412
По-настоящему приватных членов в питоне нет вообще, если захотеть, то дотянуться можно до чего угодно. Тут вопрос, зачем вам такие ограничения понадобились? Если вы просто хотите скрыть детали реализации, чтобы пользователь вашего модуля случайно не вызвал служебный метод, то есть правило одного подчеркивания
_a = 10
def _fn():
pass
Офлайн
186
А ещё есть можно сделать список __all__ всё что туда записать будет импортироваться через from … import * а то что туда не записано, не будет.
Офлайн
44
понятно либо все, либо то что укажишь. ясно.
и вставьте ссылку на его url Отредактировано AD0DE412 (Июль 1, 2019 11:38:56)
Офлайн
253
AD0DE412Нет вам неясно.
ясно.
FishHookесли не нужен символ можете del сделать.
дотянуться можно до чего угодно.
Офлайн
44
doza_andи?
Нет вам неясно.
и вставьте ссылку на его url Офлайн
27
AD0DE412Для “простого” использования всё верно: или всё, или что указано. Однако, если кто-то захочет, то может через всякие хитроумные финты ушами дотянуться до того, что не указано. Но это уже его, дотянувшегося, проблемы, не твои, если что-то переделаешь в своём классе, в приватном методе, и он будет работать не совсем так, как работал в первоначальной версии.
з.ы. я понимаю можно накрутить всякого, хитрого но все в конечном итоге сводится к либо все, либо то что укажишь. если это не так, то как?
Офлайн
568
AD0DE412Вам намекают, что неплохо бы разобраться, что вообще означает импорт в питоне, что при этом происходит, тогда и понимание процесса появится. Во многих языках программирования, да в принципе во всех современных есть конструкция импорта, но все языки устроены по-разному, и импорт в них работает по-разному, в голанге не так как в питоне, в джаве не так как в JS. Вот никак нельзя в питоне извлечь из модуля какую-то одну сущность, не прочитав и не выполнив модуль целиком и не создав в пространстве модуля все остальные сущности. И пока вы не прочитаете соответствующий раздел документации и не уложите в своей голове, как работает импорт модулей, то ничего вам не понятно.
и?
AD0DE412не делайте так больше, ладно?
укажишь
Офлайн