Как насчет чего-то вроде:
>>> o=object()
>>> [(a,type(o.__getattribute__(a))) for a in dir(o)]
[('__class__', <type 'type'>), ('__delattr__', <type 'method-wrapper'>),
('__doc__', <type 'str'>), ('__format__', <type 'builtin_function_or_method'>),
('__getattribute__', <type 'method-wrapper'>), ('__hash__', <type 'method-wrapper'>),
('__init__', <type 'method-wrapper'>),
('__new__', <type 'builtin_function_or_method'>),
('__reduce__', <type 'builtin_function_or_method'>),
('__reduce_ex__', <type 'builtin_function_or_method'>),
('__repr__', <type 'method-wrapper'>), ('__setattr__', <type 'method-wrapper'>),
('__sizeof__', <type 'builtin_function_or_method'>),
('__str__', <type 'method-wrapper'>),
('__subclasshook__', <type 'builtin_function_or_method'>)]
>>>
Более структурированным методом будет использование инспекционного модуля :
Модуль проверки предоставляет несколько полезных функций, которые помогают получить информацию о живых объектах, таких как модули, классы, методы, функции, обратные вызовы, объекты фреймов и объекты кода. Например, он может помочь вам изучить содержимое класса, получить исходный код метода, извлечь и отформатировать список аргументов для функции или получить всю информацию, необходимую для отображения подробного отслеживания.