在Python中列出类属性及其类型

时间:2014-05-16 23:52:05

标签: python

其中一个myClass属性与QListWidget的拖放事件不兼容。获得此AssertionError:

assert id(obj) not in self.memo

我需要跟踪/确定哪个myClass属性负责AssertionError,然后在将其实例作为listItem数据分配给QListWidget之前将其删除(稍后当listItem为dragAndDropped时导致AssertingError)。

myClass中有100多个attrs。我无法找到过滤掉明显不对AssertionError负责的属性的方法。

print dir(myClassInstance)

仅打印属性的名称,但不打印其类型。

同样无用的信息来自

attributes = [attr for attr in dir(myClassInstance) if not attr.startswith('__')]

理想情况下,我希望看到myClass属性的名称及其类型:它是方法,它是一个字符串..这是另一个类的实例等等。

1 个答案:

答案 0 :(得分:2)

考虑使用inspect.getmembers()

>>> import inspect
>>> from datetime import datetime
>>> now = datetime.now()
>>> inspect.getmembers(now)
[('__add__', <method-wrapper '__add__' of datetime.datetime object at 0x105754ee0>),
 ...
('weekday', <built-in method weekday of datetime.datetime object at 0x105754ee0>), ('year', 2014)]

您还可以传递predicate参数,这有助于过滤列表,例如:见: