2012-02-03 5 views
8

Tôi có một tên mô-đun dài và tôi muốn tránh phải nhập tất cả nhiều lần trong tài liệu của mình. Tôi chỉ có thể làm import long_ass_module_name as lamn và gọi nó theo cách đó. Tuy nhiên, mô-đun này có nhiều mô-đun con mà tôi muốn nhập và sử dụng.Python - Làm cách nào bạn có thể sử dụng bí danh của mô-đun để nhập các mô-đun con của nó?

Trong trường hợp này tôi sẽ không thể viết import lamn.sub_module_1 vì nhập python không nhận ra bí danh này tôi đã tạo cho long_ass_module_name của mình. Làm thế nào tôi có thể đạt được điều này?

Tôi có nên tự động nhập tất cả các mô-đun con trong mô-đun chính của mình là __init__.py không?

Trả lời

11

Một đối tượng aliased vẫn thay đổi khi bạn nhập submodules,

import my_long_module_name as mlmn 
import my_long_module_name.submodule 

mlmn.submodule.function() 

Tuyên bố import luôn tên đầy đủ của các mô-đun. Mô đun chỉ là một đối tượng và nhập một mô-đun con sẽ thêm thuộc tính vào đối tượng đó.

1

này (cao unrecommendable) cách nhập khẩu tất cả các thành viên của một đối tượng để không gian tên hiện tại hoạt động bằng cách nhìn lên các vars() từ điển:

import my_bad_ass_long_module.bafd as b 

# get __dict__ of current namespace 
myn = vars() 
for k,v in vars(b).items(): 
    # populate this namespace with the all the members of the b namespace (overwriting!) 
    myn[k] = v