2010-09-06 19 views
16

Cụ thể, tôi cần lấy một số đối tượng và hình cầu từ mô-đun chính trong mô-đun đã nhập. Tôi biết làm thế nào để tìm thấy những điều khi các mô-đun phụ huynh muốn một số điều cụ thể từ một mô-đun con, nhưng tôi không thể tìm ra cách để đi theo hướng khác.Trong Python, làm cách nào tôi có thể truy cập vào không gian tên của mô-đun chính từ mô-đun đã nhập?

+0

Vâng, được rồi, tôi cho rằng đó phải là trường hợp vì tôi không thể tìm thấy bất kỳ câu trả lời nào về điều này ở bất kỳ đâu. Điểm mấu chốt là tôi không quan tâm đến việc sử dụng lại bất kỳ mã nào trong số này, tôi chỉ đang cố gắng chia nhỏ dự án này thành nhiều tệp để dễ quản lý hơn để tìm thấy những gì tôi đang tìm kiếm. Tôi thực sự không biết mình đang làm gì, thành thật mà nói, vì vậy đây là một trải nghiệm học tập, nhưng thực sự tôi chỉ muốn tìm mã tôi muốn chỉnh sửa dễ dàng hơn khi tôi muốn chỉnh sửa nó. – Damon

+0

Tôi đồng ý rằng cần phải có một cách để chuyển các tham số cho một mô-đun khi nó được nhập - kiểu giống như khi bạn chuyển chúng vào một hàm tạo đối tượng. Tuy nhiên tôi chưa bao giờ tìm thấy một cách sạch sẽ để làm điều này. – martineau

+2

Tôi đang tìm kiếm chính xác điều tương tự cho cùng một lý do chính xác, vì vậy có vẻ như đó là một điều mới lạ điển hình .. – sfranky

Trả lời

12
import __main__ 

Nhưng đừng làm điều này.

+3

tại sao không làm điều này? – Alcott

+5

@Alcott: Bởi vì nó có thể dễ dàng biến chương trình của bạn thành một bánh quy cây. –

+1

@ IgnacioVazquez-Abrams bạn có thể mở rộng trên đó không? –

1

Không chắc đó có phải là thực hành tốt hay không nhưng có thể bạn có thể truyền các đối tượng và biến mà bạn cần làm tham số cho các phương thức hoặc lớp bạn gọi trong mô-đun đã nhập.

3

Tôi nghĩ rằng điều này sẽ làm việc:

import sys  
main_mod = sys.modules['__main__'] 
+0

Điều này tương đương với 'import __main__ as main_mod'. –

9

Câu trả lời bạn đang tìm kiếm là:

import __main__ 

main_global1= __main__.global1 

Tuy nhiên, bất cứ khi nào một module module1 cần công cụ từ các module __main__, sau đó:

  • mô-đun __main__ phải cung cấp tất cả các dữ liệu cần thiết các tham số cho một hàm/lớp module1,
  • hoặc bạn nên đặt mọi thứ cần được chia sẻ trong một mô-đun khác và nhập nó dưới dạng import module2 trong cả hai __main__module1.
Các vấn đề liên quan