Because dir() is supplied primarily as a convenience for use at an interactive prompt, it tries to supply an interesting set of names more than it tries to supply a rigorously or consistently defined set of names, and its detailed behavior may change across releases.
您可以通过} 函数获得它,这只是一个快捷方式:
__dict__
属性或built-in ^{只有对象的属性。方法和类属性不存在。
您可以使用内置方法
vars()
基本的答案是“你不能这么可靠”。见this question。
你可以用
[attr for attr in dir(obj) if attr[:2] + attr[-2:] != '____' and not callable(getattr(obj,attr))]
得到一个近似值。但是,你不应该依赖这个,because:
换句话说,没有一种规范的方法可以得到“对象的所有属性”(或“对象的所有方法”)的列表。
如果您正在进行某种动态编程,需要迭代对象的未知字段,那么唯一可靠的方法是实现自己跟踪这些字段的方法。例如,您可以使用属性命名约定、特殊的“fields”对象,或者,最简单的说,使用字典。
相关问题 更多 >
编程相关推荐