Я вважаю, що те, що ти хочеш, є приблизно таким:
список атрибутів від об’єкта
На мою скромну думку, вбудована функція dir()
може зробити цю роботу за вас. Взяті з help(dir)
результатів на вашому Python Shell:
реж. (...)
dir([object]) -> list of strings
Якщо викликано без аргументу, поверніть імена в поточну область.
В іншому випадку поверніть алфавітний список імен, що містять (деякі) атрибути даного об'єкта, і атрибути, доступні від нього.
Якщо об'єкт надає метод, названий __dir__
, він буде використаний; інакше використовується логіка dir () за замовчуванням і повертає:
- для об'єкта модуля: атрибути модуля.
- для об’єкта класу: його атрибути та рекурсивно атрибути його баз.
- для будь-якого іншого об'єкта: його атрибути, атрибути класу та рекурсивно атрибути базових класів класу.
Наприклад:
$ 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']
Перевіряючи ваше питання, я вирішив продемонструвати свій порядок думок з кращим форматуванням результатів 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("")
Сподіваюся, що я зробив свій внесок :).