myClass属性之一与QListWidget的拖放事件不兼容。获取此AssertionError:

assert id(obj) not in self.memo


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

myClass中有100多个attrs。而且我找不到过滤显然不负责AssertionError的属性的方法。

print dir(myClassInstance)


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

同样无用的信息来自

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


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

最佳答案

考虑使用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参数,以帮助过滤列表,例如看到:


How do I get list of methods in a Python class?

07-24 17:46
查看更多