Python

2009-06-13 14 views
91
mevcut modülün nitelikler bir başvuru almak nasıl

Ne komut satırında şu şekilde görünecektir yapmaya çalışıyorum:Python

>>> import mymodule 
>>> names = dir(mymodule) 

nasıl mymodule tanımlanan tüm isimlere göndermeler alabilirsiniz mymodule kendi içinde? Böyle

şey:

# mymodule.py 
names = dir(__thismodule__) 

cevap

103

Sadece globalsi()

globalsi kullanmak() - Mevcut küresel sembol tabloyu temsil eden bir sözlük dönün. Bu her zaman mevcut modülün sözlüğündedir (bir işlev veya yönteminde, bu, tanımlandığı modül modülüdür; buradan modülünü çağırır).

http://docs.python.org/library/functions.html#globals

+3

var mı? – dimo414

+5

Arayanın globalsını geri tepme modülünden (http://docs.python.org/library/traceback.html) almayı deneyebilirsiniz, ancak bu karanlık büyülü bölgeye girmektedir. Ne yapmaya çalıştığını bilmiyorum ama buna ihtiyacın olursa tasarımını yeniden düşünmek isteyebilirsin. –

10

Ayrıca kontrol yerleşik inspect modülü. Çok kullanışlı olabilir.

+1

İlgili bir kullanım örneği bekleniyor. Bağlantı, burada hiçbir şeyden yoksun bırakılabilir. – IAbstract

121

Daha önce bahsedildiği gibi, globals size, modülde tanımlanan isimlerin bir listesini veren dir() 'nin aksine bir sözlük verir. Genellikle bu yapılır gördüğüm şekilde şu şekildedir: çağıran modülünün gloabals() erişmek için herhangi bir yolu yerine tanımlayan modülün,

import sys 
dir(sys.modules[__name__]) 
+1

Bunun '__main__' modülü için çalışamayacağı bir yorum ekleyecektim (bu, modülün terminalde çalıştığı şeydir) çünkü bu sys.modules içinde listelenmiş gibi görünmüyor - ama gerçekten de work :) – markm

+0

Ancak, ipdb'den işe yaramaz (dosyanıza "import ipdb; ipdb.set_trace()" ifadesini ekleyiniz). – gatoatigrado

+9

Mükemmel! Bu sadece mevcut modülün docstringini bir kullanım mesajı olarak kullanmamı sağladı - 'sys.modules [__ ad __] .__ doc__'. – george