0

私は方法を見つけます:

(1):dir(object)は:

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__'

だから私のコードを実行させる方法。

ありがとう

4

2 に答える 2

2
s += str(i)+':'+str(getattr(object, i))
于 2010-06-05T09:54:02.783 に答える
2
s = ''.join('%s: %s' % (a, getattr(o, a)) for a in dir(o))
  • dirすべての属性を一覧表示します
  • for ... in各属性名を返すジェネレータを作成します
  • オブジェクトのgetattr属性の値を取得します
  • %それらの値を文字列に補間します
  • すべての''.join文字列を1つの文字列に連結します
于 2010-06-05T14:00:40.107 に答える