Ich glaube, was Sie wollen, ist ungefähr so:
eine Liste von Attributen aus einem Objekt
Meiner bescheidenen Meinung nach kann die eingebaute Funktion dir()
diese Aufgabe für Sie erledigen. Entnommen aus der help(dir)
Ausgabe Ihrer Python-Shell:
dir (...)
dir([object]) -> list of strings
Wenn Sie ohne Argument aufgerufen werden, geben Sie die Namen im aktuellen Bereich zurück.
Andernfalls geben Sie eine alphabetische Liste von Namen zurück, die (einige) der Attribute des angegebenen Objekts und der von ihm erreichbaren Attribute enthält.
Wenn das Objekt eine benannte Methode bereitstellt __dir__
, wird diese verwendet. Andernfalls wird die Standardlogik dir () verwendet und gibt Folgendes zurück:
- für ein Modulobjekt: die Attribute des Moduls.
- für ein Klassenobjekt: seine Attribute und rekursiv die Attribute seiner Basen.
- für jedes andere Objekt: seine Attribute, die Attribute seiner Klasse und rekursiv die Attribute der Basisklassen seiner Klasse.
Zum Beispiel:
$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = "I am a string"
>>>
>>> type(a)
<class 'str'>
>>>
>>> dir(a)
['__add__', '__class__', '__contains__', '__delattr__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__',
'__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__',
'__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'_formatter_field_name_split', '_formatter_parser', 'capitalize',
'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find',
'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace',
'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition',
'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip',
'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title',
'translate', 'upper', 'zfill']
Als ich Ihr Problem überprüfte, beschloss ich, meinen Gedankengang mit einer besseren Formatierung der Ausgabe von zu demonstrieren dir()
.
dir_attributes.py (Python 2.7.6)
#!/usr/bin/python
""" Demonstrates the usage of dir(), with better output. """
__author__ = "ivanleoncz"
obj = "I am a string."
count = 0
print "\nObject Data: %s" % obj
print "Object Type: %s\n" % type(obj)
for method in dir(obj):
# the comma at the end of the print, makes it printing
# in the same line, 4 times (count)
print "| {0: <20}".format(method),
count += 1
if count == 4:
count = 0
print
dir_attributes.py (Python 3.4.3)
#!/usr/bin/python3
""" Demonstrates the usage of dir(), with better output. """
__author__ = "ivanleoncz"
obj = "I am a string."
count = 0
print("\nObject Data: ", obj)
print("Object Type: ", type(obj),"\n")
for method in dir(obj):
# the end=" " at the end of the print statement,
# makes it printing in the same line, 4 times (count)
print("| {:20}".format(method), end=" ")
count += 1
if count == 4:
count = 0
print("")
Hoffe, dass ich dazu beigetragen habe :).