Creo que lo que quiere es algo como esto:
una lista de atributos de un objeto
En mi humilde opinión, la función incorporada dir()
puede hacer este trabajo para tú. Tomado de help(dir)
salida del intérprete de comandos de Python:
dir (...)
dir([object]) -> list of strings
Si se llama sin argumentos, devuelve los nombres en el ámbito actual.
De lo contrario, devuelva una lista ordenada alfabéticamente de los nombres que comprenden (algunos de) los atributos del objeto dado, y de los atributos accesibles desde él.
Si el objeto proporciona un método denominado __dir__
, que se utilizarán; de lo contrario la lógica dir predeterminado() se utiliza y devuelve:
- para un objeto de módulo: atributos del módulo.
- para un objeto de clase: sus atributos, y de forma recursiva los atributos de sus bases.
- para cualquier otro objeto: sus atributos, atributos de su clase, y de forma recursiva los atributos de las clases base de su clase.
Por ejemplo:
$ 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']
Como me iba a registrar su problema, decidí demostrar mi línea de pensamiento, con un mejor formato de la salida de 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("")
esperanza de que he contribuido :).
Relevante: https://stackoverflow.com/q/46033277/1959808 –