其中一个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属性的名称及其类型:它是方法,它是一个字符串..这是另一个类的实例等等。
答案 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
参数,这有助于过滤列表,例如:见: