W szczególności potrzebuję uzyskać niektóre obiekty i globale z modułu głównego w importowanym module. Wiem, jak znaleźć te rzeczy, gdy moduł macierzysty chce czegoś konkretnego z modułu podrzędnego, ale nie mogę wymyślić, jak iść w innym kierunku.W Pythonie, w jaki sposób uzyskać dostęp do przestrzeni nazw modułu głównego z zaimportowanego modułu?
Odpowiedz
import __main__
Ale nie rób tego.
dlaczego tego nie robisz? – Alcott
@Alcott: Ponieważ może bardzo łatwo zamienić twój program w precla. –
@ Ignacio Vaazquez-Abrams możesz rozwinąć? –
Nie jestem pewien, czy jest to dobra praktyka, ale może mógłbyś przekazać obiekty i zmienne, które potrzebujesz jako parametry, do metod lub klas, które wywołasz w importowanym module.
myślę, że to będzie działać:
import sys
main_mod = sys.modules['__main__']
Jest to równoważne 'importowi __main__ jako main_mod'. –
odpowiedź szukasz jest:
import __main__
main_global1= __main__.global1
Jednak, gdy moduł module1
potrzebuje rzeczy z modułu __main__
, a następnie:
- albo moduł
__main__
powinien dostarczyć wszystkie niezbędne dane parametry do funkcji/klasymodule1
, - lub należy umieścić wszystko, co należy udostępnić w innym module, i zaimportować jako
import module2
w obu__main__
imodule1
.
- 1. Python Wyśmiewanie funkcji z zaimportowanego modułu
- 2. Wzorzec modułu JavaScript: w jaki sposób metody prywatne mają dostęp do zakresu modułu?
- 3. Jak uzyskać odwołanie do atrybutów bieżącego modułu w Pythonie
- 4. W jaki sposób uzyskać nazwę modułu definicji klasy obiektu zamiast nazwy modułu procesu tworzenia obiektu?
- 5. Dostęp do przestrzeni nazw dominującą w C++
- 6. Dostęp do globalnej przestrzeni nazw C++ z innej przestrzeni nazw
- 7. Jak uzyskać dostęp do zmiennych klasowych z modułu?
- 8. Zastępowanie przestrzeni nazw w Pythonie
- 9. knockout.js Jak uzyskać dostęp do indeksu $ w funkcji modułu obsługi
- 10. Dostęp do zmiennej sesji z modułu HTTP
- 11. dodatek do załadowanego klasy/modułu w Pythonie
- 12. Dostęp do modułu plików node.js w Meteoru
- 13. Instalacja modułu lxml w Pythonie
- 14. Android Studio nie może rozpoznać symboli z zaimportowanego modułu AAR
- 15. W projekcie oprogramowania, w jaki sposób wyróżniałbyś komponent z modułu?
- 16. Jak uzyskać dostęp do modułu spoza twojego folderu plików w Pythonie?
- 17. Jak utworzyć pakiet przestrzeni nazw w Pythonie?
- 18. Jak uzyskać nazwę pliku modułu __main__ w Pythonie?
- 19. Używanie "::" zamiast "modułu ..." do wyświetlania nazw Ruby
- 20. Jak napisać unittest do importowania modułu w Pythonie
- 21. Jak usunąć modułu używającego Anaconda w Pythonie
- 22. Dziedzicz importowanie z modułu nadrzędnego do modułu podrzędnego w Angular2
- 23. Jak uzyskać dostęp do elementu toplevel w Ruby, z poziomu modułu, który definiuje tę samą nazwę
- 24. Jak uzyskać dostęp do głównego DataContext w DataTemplate w WPF?
- 25. W jaki sposób Zend Framework 2 renderuje cząstki wewnątrz modułu?
- 26. Zamiennik modułu md5 w Pythonie 3?
- 27. W jaki sposób można przestrzeni nazw Pakunek SystemJS
- 28. Wywołanie modułu Pythona z Perl
- 29. Jaki jest właściwy sposób napisania metody finalizacji modułu w Julii?
- 30. w jaki sposób uzyskać dostęp do dopasowanych grup w akcji?
Cóż, w porządku, zakładam, że tak musi być, ponieważ nie mogę znaleźć nigdzie żadnej odpowiedzi na ten temat. Najważniejsze jest to, że nie jestem zainteresowany ponownym użyciem żadnego z tego kodu, próbuję po prostu podzielić ten projekt na wiele plików, aby łatwiej było znaleźć to, czego szukam. Naprawdę nie wiem, co robię, szczerze mówiąc, więc to była nauka, ale tak naprawdę chcę, żeby łatwiej było znaleźć kod, który chcę edytować, kiedy chcę go edytować. – Damon
Zgadzam się, że powinien istnieć sposób przekazywania parametrów do modułu podczas importowania - tak jak w przypadku przekazywania ich do konstruktora obiektów. Jednak nigdy nie udało mi się znaleźć tego w czysty sposób. – martineau
Szukałem dokładnie tego samego z dokładnie tego samego powodu, więc wydaje się, że to typowa rzecz dla początkujących .. – sfranky