Как показать все методы и данные, когда объект не имеет функции "__iter__" в Python - PullRequest
0 голосов
/ 05 июня 2010

я найду способ:

(1): каталог (объект):

a="['__class__', '__contains__', '__delattr__', '__delitem__', '__dict__', '__doc__', '__getattribute__', '__getitem__', '__hash__', '__init__', '__iter__', '__metaclass__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__str__', '__weakref__', '_errors', '_fields', '_prefix', '_unbound_fields', 'confirm', 'data', 'email', 'errors', 'password', 'populate_obj', 'process', 'username', 'validate']"

(2):

b=eval(a)

(3) и он стал списком всех методов:

['__class__', '__contains__', '__delattr__', '__delitem__', '__dict__', '__doc__', '__getattribute__', '__getitem__', '__hash__', '__init__', '__iter__', '__metaclass__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__str__', '__weakref__', '_errors', '_fields', '_prefix', '_unbound_fields', 'confirm', 'data', 'email', 'errors', 'password', 'populate_obj', 'process', 'username', 'validate']

(3) затем показывают метод объекта, и весь код:

s=''
a=eval(str(dir(object)))
for i in a:
    s+=str(i)+':'+str(object[i])

print s

но выдает ошибку:

KeyError: '__class__'

так, как заставить мой код работать.

спасибо

Ответы [ 2 ]

2 голосов
/ 05 июня 2010
s = ''.join('%s: %s' % (a, getattr(o, a)) for a in dir(o))
  • dir перечисляет все атрибуты
  • for ... in создает генератор, который возвращает имя каждого атрибута
  • getattr извлекает значение атрибута для объекта
  • % интерполирует эти значения в строку
  • ''.join объединяет все строки в одну
2 голосов
/ 05 июня 2010
s += str(i)+':'+str(getattr(object, i))
...