2017-02-01 6 views
1

Angenommen, ich habe ein Modul namens test.py. In dieser Datei kenne ich eine Klasse namens dummy. Wie bekomme ich die Zeilennummer der Klassen-Dummy-Definition, nachdem ich sie importiert habe?Python wie programmgesteuert Zeilennummer der Klassendefinition erhalten

Gibt es eine API kann so etwas tun?

Wenn Dummy eine Funktion ist, dann gibt dummy.__code__.co_firstlineno die Zeilennr. Aber wenn Dummy eine Klasse ist, hat es keine __code__ Attribut

Ich möchte wissen, gibt es einen Weg, der die Zeile zurückgeben kann, ohne die Datei zu analysieren.

+1

Möglicherweise eine xy Frage http://meta.stackexchange.com/questions/66377/what-is-the-xy- Problem Was versuchst du damit zu tun? – kalenpw

+0

Was genau versuchen Sie zu erreichen, warum müssen Sie die Zeile no wissen? –

+0

Kann nicht einfach Ihre 'test.py' Datei für' class Dummy' analysieren? –

Antwort

1

inspect.findsource(test.dummy)[1] liefert die Zeilennummer über Regex-Suche in der Quelldatei (eher langsam).

Wenn Sie die Klasse, Zeilennummern definieren könnte wie folgt ausgesetzt:

class MyClass: 
    def test_01(self): 
     assert 1 
    _classline_ = inspect.currentframe().f_code.co_firstlineno 
    _thisline_ = inspect.currentframe().f_lineno 
Verwandte Themen