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?