2011-01-14 18 views
9

Tôi đang làm việc trên một dự án trong đó tôi cần sử dụng mô-đun bên thứ ba trong các tệp dự án khác nhau (tệp .py). Tình hình là như thế này.python nhiều mục nhập cho một mô-đun chung

Tôi có tệp "abc.py" để nhập mô-đun bên thứ ba "common.py". Có vài tệp khác cũng nhập "common.py". Tất cả các tệp này cũng được nhập vào tệp main project "main.py".

Có vẻ như dư thừa để nhập cùng một mô-đun trong dự án của bạn nhiều lần trong các tệp khác nhau vì "main.py" cũng đang nhập tất cả các tệp dự án.

Tôi cũng không chắc chắn về kích thước của dự án bị ảnh hưởng bởi nhiều câu lệnh nhập.

Ai đó có thể giúp tôi làm cho mọi việc đơn giản hơn một chút.

Trả lời

21

Chỉ nhập tải một mô-đun một lần. Bất kỳ nhập khẩu nào sau đó chỉ cần thêm nó vào không gian tên hiện tại.

Chỉ cần nhập những thứ trong các tệp bạn cần chúng để có sẵn và cho phép Python nâng hạng nặng để tìm ra các mô-đun tải.

3

Có, bạn nói đúng, hành vi này thực sự tồn tại trong Python. Cụ thể, nếu mã dùng cố gắng nhập khẩu cùng một module theo những cách khác nhau, ví dụ - import aimport A.a (nơi a.py tập tin nằm vào A gói và import đầu tiên được thực hiện từ bên trong gói A trong khi người kia import đến như từ bên ngoài).

Điều này có thể dễ dàng xảy ra trong cuộc sống thực, đặc biệt là đối với các dự án Python được đóng gói đa cấp.

Tôi đã gặp phải tác dụng phụ của hành vi như vậy, cụ thể là lệnh isinstance không hoạt động khi đối tượng được kiểm tra đối với lớp được xác định trong mô-đun được nhập theo cách như vậy.

Giải pháp tôi có thể nghĩ đến là xác định lại chức năng __builtin__. __ import__ để thực hiện công việc của mình thông minh hơn.

Các vấn đề liên quan