2012-02-03 2 views
8

Uzun bir modül ismim var ve belgende birçok kez yazmak zorunda kalmak istemiyorum. Ben sadece import long_ass_module_name as lamn yapabilir ve bu şekilde diyebilirim. Ancak, bu modülde almak ve kullanmak istediğim birçok alt modüle sahiptir.Python - Alt modüllerini almak için bir modülün takma adını nasıl kullanabilirsiniz?

Bu durumda, python import, long_ass_module_name için oluşturduğum bu diğer adı tanımıyor çünkü import lamn.sub_module_1 yazamayacağım. Bunu nasıl başarabilirim?

Ana modülümün tüm alt modüllerini __init__.py otomatik olarak içe aktarmalı mıyım? Eğer submodules içe aktarırken bir başka ad nesne hala değişiklikleri

cevap

11

,

import my_long_module_name as mlmn 
import my_long_module_name.submodule 

mlmn.submodule.function() 

import ifadesi her zaman modülün tam adını alır. Modül sadece bir nesnedir ve bir alt modemin içe aktarılması bu nesneye bir özellik ekler.

Geçerli isim bir nesnenin tüm üyelerini ithal Bu (yüksek unrecommendable) yolu vars() sözlüğe bakarak çalışır
1

:

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