Inspektionsmodul:
Das Inspektionsmodul bietet mehrere nützliche Funktionen, um Informationen über Live-Objekte wie Module, Klassen, Methoden, Funktionen, Tracebacks, Rahmenobjekte und Codeobjekte zu erhalten.
Mit getmembers()
können Sie alle Attribute Ihrer Klasse sowie ihren Wert sehen. Um private oder geschützte Attribute auszuschließen, verwenden Sie .startswith('_')
. Um Methoden oder Funktionen auszuschließen, verwenden Sie inspect.ismethod()
oder inspect.isfunction()
.
import inspect
class NeueKlasse(object):
def __init__(self, nummer):
self.multi = int(nummer) * 2
self.str = str(nummer)
def func_1(self):
pass
inst = NeueKlasse(2)
for i in inspect.getmembers(inst):
# Ignoriert alles, was mit Unterstrich beginnt
# (d. h. private und geschützte Attribute)
if not i[0].startswith('_'):
# Ignoriert Methoden
if not inspect.ismethod(i[1]):
print(i)
Beachten Sie, dass ismethod()
auf dem zweiten Element von i
verwendet wird, da das erste einfach ein String ist (sein Name).
Offtopic: Verwenden Sie für Klassennamen <a href="https://www.python.org/dev/peps/pep-0008/#class-names" rel="nofollow noreferrer">CamelCase</a>.
99 Stimmen
Praktisch jeder in Python benennt seine Klassen wie
NewClass
. Du könntest die Erwartungen der Leute herausfordern, wenn du eine Benennungskonvention wienew_class
verwendest.1 Stimmen
Auch wenn es interaktiv für Menschen ist und nicht programmgesteuert verwendet werden kann, hilft die
help()
-Funktion bei der Beschaffung von Informationen über Klassen, Funktionen, integrierte Funktionen, Module und mehr2 Stimmen
Relevant: stackoverflow.com/questions/1398022/…