当对象没有“__iter__”时如何显示所有方法和数据python 中的函数

发布于 2024-09-04 12:31:22 字数 1301 浏览 5 评论 0原文

我找到了一种方法:

(1):dir(对象)是:

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

那么如何让我的代码运行。

谢谢

i find a way :

(1):the dir(object) is :

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)and it became a list of all method :

['__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)then show the object's method,and all code is :

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

print s

but it show error :

KeyError: '__class__'

so how to make my code running .

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

s = ''.join('%s: %s' % (a, getattr(o, a)) for a in dir(o))
  • dir 列出所有属性
  • for ... in 创建一个生成器,返回每个属性名称
  • getattr 检索对象的属性值
  • % 将这些值插入到一个字符串中
  • ''.join 将所有字符串连接成一个字符串
s = ''.join('%s: %s' % (a, getattr(o, a)) for a in dir(o))
  • dir lists all attributes
  • the for ... in creates a generator which returns each attribute name
  • the getattr retrieves the value of the attribute for the object
  • the % interpolates those values into a string
  • the ''.join concatenates all the strings into a single one
满天都是小星星 2024-09-11 12:31:22
s += str(i)+':'+str(getattr(object, i))
s += str(i)+':'+str(getattr(object, i))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文