2009年10月20日火曜日

クラスのスーパークラスを取得する

# -*- coding: utf-8 -*-

import inspect

class A:
    pass
class B(A):
    pass
class C():
    pass
class D(C, B):
    pass

# クラスのスーパークラスをタプルで取得する
print D.__bases__

# クラスが継承しているクラス(自身も含め)をタプルで取得する
print inspect.getmro(D)

# インスタンスが属しているクラスを取得する
print D().__class__

実行すると
(<class __main__.C at 0xb7bed1dc>, <class __main__.B at 0xb7bed1ac>)
(<class __main__.D at 0xb7bed20c>, <class __main__.C at 0xb7bed1dc>, <class __main__.B at 0xb7bed1ac>, <class __main__.A at 0xb7cbc59c>)
__main__.D

詳細はドキュメントで

0 件のコメント:

コメントを投稿