Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 30, 2019 23:54:54

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

как перегрузить функцию из импортированого модуля?

эээ … в общем есть билиотека в ней несколько переменных, классов и функций что то вроде

...
def main():
code

if __name__ == '__main__':
main()

в функции main() весь модуль соберается (этот модуль так то это консольная программа, просто я хочу использовать ее как модуль в своем скрипте) и происходит нужная магия.
мне нужно немного изменить ее работу, после импорта или импортировать модуль с исключение этой функции. как это сделать?



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Июль 1, 2019 00:04:27)

Офлайн

#2 Июль 1, 2019 07:30:29

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

как перегрузить функцию из импортированого модуля?

AD0DE412
эээ …
Постарайтесь внятно изложить что вам нужно.

AD0DE412
изменить ее работу, после импорта или импортировать модуль с исключение этой функции. как это сделать?
А кто вас заставляет импортировать функцию main? Вызываться она у вас при импорте не будет. По идее можно сделать почти что угодно, но только зачем? Если нужна разная инициализация то

 if __name__ == '__main__':
    main()
else:
    other_main()
ни разу не встречался с тем чтобы так надо было делать. Это у вас наверное ошибка проектирования программы.



Офлайн

#3 Июль 1, 2019 09:54:03

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

как перегрузить функцию из импортированого модуля?

спасибо за ответ
в общем вопрос в следуещем
есть просто импорт всего модуля при помощи import module
есть импорт имен из модуля from module import name или
from module import *
итд
а можно подключить модуль с исключением некоторых имен
т.е. звездачка (*) в конструкции from module import * означает импортировать все имена,
возможно ли использовать другую конструкцию дающую в резульнате импорт всех имен за исключением некоторых имен что то вроде
from module import * (плюс что то исключающее определенное имя)



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Июль 1, 2019 11:21:02)

Офлайн

#4 Июль 1, 2019 10:22:20

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как перегрузить функцию из импортированого модуля?

AD0DE412
По-настоящему приватных членов в питоне нет вообще, если захотеть, то дотянуться можно до чего угодно. Тут вопрос, зачем вам такие ограничения понадобились? Если вы просто хотите скрыть детали реализации, чтобы пользователь вашего модуля случайно не вызвал служебный метод, то есть правило одного подчеркивания

_a = 10
def _fn():
pass
такие сущности считаются приватными и по дефолту не импортитуются и не подсвечиваются ИДЕшками.
А вообще, организуйте свои модули в пакеты, на уровне пакета есть __init__ файл, в нем можете конретизировать, что конкретно вы хотите выставить наружу пакета.



Офлайн

#5 Июль 1, 2019 11:10:29

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

как перегрузить функцию из импортированого модуля?

А ещё есть можно сделать список __all__ всё что туда записать будет импортироваться через from … import * а то что туда не записано, не будет.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#6 Июль 1, 2019 11:22:36

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

как перегрузить функцию из импортированого модуля?

понятно либо все, либо то что укажишь. ясно.



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Июль 1, 2019 11:38:56)

Офлайн

#7 Июль 1, 2019 21:54:45

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

как перегрузить функцию из импортированого модуля?

AD0DE412
ясно.

Нет вам неясно.
FishHook
дотянуться можно до чего угодно.
если не нужен символ можете del сделать.



Офлайн

#8 Июль 2, 2019 07:28:58

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

как перегрузить функцию из импортированого модуля?


doza_and
Нет вам неясно.
и?
з.ы. я понимаю можно накрутить всякого, хитрого но все в конечном итоге сводится к либо все, либо то что укажишь. если это не так, то как?



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#9 Июль 2, 2019 07:45:23

Rafik
Зарегистрирован: 2018-09-04
Сообщения: 231
Репутация: +  27  -
Профиль   Отправить e-mail  

как перегрузить функцию из импортированого модуля?

AD0DE412
з.ы. я понимаю можно накрутить всякого, хитрого но все в конечном итоге сводится к либо все, либо то что укажишь. если это не так, то как?
Для “простого” использования всё верно: или всё, или что указано. Однако, если кто-то захочет, то может через всякие хитроумные финты ушами дотянуться до того, что не указано. Но это уже его, дотянувшегося, проблемы, не твои, если что-то переделаешь в своём классе, в приватном методе, и он будет работать не совсем так, как работал в первоначальной версии.

Офлайн

#10 Июль 2, 2019 09:18:13

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как перегрузить функцию из импортированого модуля?

AD0DE412
и?
Вам намекают, что неплохо бы разобраться, что вообще означает импорт в питоне, что при этом происходит, тогда и понимание процесса появится. Во многих языках программирования, да в принципе во всех современных есть конструкция импорта, но все языки устроены по-разному, и импорт в них работает по-разному, в голанге не так как в питоне, в джаве не так как в JS. Вот никак нельзя в питоне извлечь из модуля какую-то одну сущность, не прочитав и не выполнив модуль целиком и не создав в пространстве модуля все остальные сущности. И пока вы не прочитаете соответствующий раздел документации и не уложите в своей голове, как работает импорт модулей, то ничего вам не понятно.

AD0DE412
укажишь
не делайте так больше, ладно?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version