Если вы действительно хотите членов класса, экземпляра или модуля, просто используйте встроенный vars()
: http://docs.python.org/library/functions.html#vars (он работает как объявлено)
Если вы хотите, чтобы члены текущего модуля находились внутри функции или класса (где vars()
будет делать неправильные вещи), тогда вам следует использовать globals()
.
Однако код и слова в вашем вопросе не совпадают. Вы говорите , что вам нужен доступ к объектам "внутри" myClass
, но затем вы публикуете код, который явно ищет подклассы myClass
, а не его содержимое.
Чтобы дополнить ответы Asterisk еще несколькими примерами игры в интерактивном режиме:
>>> class Example:
... def method(): pass
...
>>> class SubExample(Example):
... pass
...
>>> class OverrideExample(Example):
... def method():
... pass
...
>>> globals()
{'OverrideExample': <class '__main__.OverrideExample'>, '__builtins__': <module
'builtins' (built-in)>, 'Example': <class '__main__.Example'>, '__name__': '__ma
in__', '__package__': None, '__doc__': None, 'SubExample': <class '__main__.SubE
xample'>}
>>> Example.__subclasses__()
[<class '__main__.SubExample'>, <class '__main__.OverrideExample'>]
>>> vars(Example)
dict_proxy({'__dict__': <attribute '__dict__' of 'Example' objects>, '__module__
': '__main__', '__weakref__': <attribute '__weakref__' of 'Example' objects>, 'm
ethod': <function method at 0x00BF6F18>, '__doc__': None})
>>> vars(SubExample)
dict_proxy({'__module__': '__main__', '__doc__': None})
>>> vars(OverrideExample)
dict_proxy({'__module__': '__main__', 'method': <function method at 0x00C10030>,
'__doc__': None})
>>> vars(Example())
{}
>>> vars(SubExample())
{}
>>> vars(OverrideExample())
{}
Обратите внимание на различия между тем, что видно на уровне модуля, в каждом объекте класса и в каждом экземпляре класса.
Также обратите внимание, что для данного определения класса vars()
не будет сообщать вам о любых унаследованных методах. Он также не расскажет вам о методах, доступных через экземпляр класса. Чтобы правильно увидеть оба из них, лучше всего делать так, как предлагает Нуфал, и идти dir()
, вызывая getattr()
для каждого атрибута.