Bagaimana saya bisa mendapatkan referensi ke modul dari dalam modul itu? Juga, bagaimana saya bisa mendapatkan referensi ke paket yang berisi modul itu?
Bagaimana saya bisa mendapatkan referensi ke modul dari dalam modul itu? Juga, bagaimana saya bisa mendapatkan referensi ke paket yang berisi modul itu?
Jawaban:
import sys
current_module = sys.modules[__name__]
Satu lagi teknik, yang tidak mengimpor modul sys, dan bisa dibilang - tergantung selera Anda - lebih sederhana:
current_module = __import__(__name__)
Sadarilah tidak ada impor. Python mengimpor setiap modul hanya sekali.
Jika Anda memiliki kelas dalam modul itu, maka __module__
properti kelas adalah nama modul kelas tersebut. Dengan demikian Anda dapat mengakses modul melalui sys.modules[klass.__module__]
. Ini juga berfungsi untuk fungsi.
__module__
properti bukan modul, tetapi sebuah string; dengan demikian inspect.getabsfile(func.__module__)
gagal dengan " TypeError: 'os' bukan modul, kelas, metode, fungsi, traceback, bingkai, atau objek kode "; sementara inspect.getabsfile(sys.modules[o.__module__])
tampaknya berlalu.
Anda bisa mendapatkan nama modul saat ini menggunakan __name__
Referensi modul dapat ditemukan di sys.modules
kamus.
Lihat dokumentasi Python
Anda bisa meneruskannya dari luar:
mymod.init(mymod)
Tidak ideal tetapi berfungsi untuk kasus penggunaan saya saat ini.