Pythonで多重継承を禁止する
継承の仕方に制限をつけたいときもあるかと思います。そんなときはtypeを継承して自分の好きなタイプを作って、__metaclass__で指定してみましょう。多重継承の他にも、メソッドに制限をつけることもできるでしょう。(以下の例では、継承数を1にしているので、多重継承禁止とは少し違います)
#!/usr/bin/env python2.6 import unittest import sys class BasicTests(unittest.TestCase): def test_multiple_inheritance_not_allowed(self): class OneParentType(type): def __new__(cls, name, bases, d): assert 1 == len(bases), "multiple inheritance not allowed." return type.__new__(cls, name, bases, d) class A(object): __metaclass__ = OneParentType class B(A): pass b = B() try: class C(A, B): pass except AssertionError: self.assertEqual('multiple inheritance not allowed.', str(sys.exc_info()[1])) return self.fail() if __name__ == '__main__': unittest.main()