Meh*_*dad 336 python introspection python-2.6
有没有办法获得所有属性/方法/字段/等.Python中的对象?
vars()是接近我想要的,但它不起作用,除非一个对象有一个__dict__,这并不总是正确的(例如,它不适用于a list,a dict等).
Eli*_*ins 81
你可能想要的是什么dir().
问题是类可以覆盖特殊__dir__方法,这会导致dir()返回类所需的任何内容(尽管鼓励它们返回准确的列表,但这不会强制执行).此外,一些对象可以通过覆盖来实现动态属性__getattr__,可以是RPC代理对象,或者可以是C扩展类的实例.如果您的对象是这些示例中的一个,那么它们可能没有__dict__ 或者无法通过以下方式提供全面的属性列表__dir__:这些对象中的许多可能具有如此多的动态attrs,在您尝试之前它实际上并不会知道它有什么访问它.
在短期内,如果dir()还不够,你可以编写一个遍历__dict__一个对象的函数,然后编写__dict__所有类的函数obj.__class__.__mro__; 虽然这只适用于普通的python对象.从长远来看,你可能不得不使用鸭子打字+假设 - 如果它看起来像一只鸭子,交叉你的手指,并希望它有.feathers.
Sli*_*eam 64
我用 __dict__
示例:
class MyObj(object):
def __init__(self):
self.name = 'Chuck Norris'
self.phone = '+6661'
obj = MyObj()
print(obj.__dict__)
# Output:
# {'phone': '+6661', 'name': 'Chuck Norris'}
Run Code Online (Sandbox Code Playgroud)
Jas*_*gel 16
您可以dir(your_object)用来获取属性和getattr(your_object, your_object_attr)获取值
用法:
for att in dir(your_object):
print (att, getattr(your_object,att))
Run Code Online (Sandbox Code Playgroud)