New submission from Artem Tomilov <scrapl...@gmail.com>: from abc import ABCMeta
class Meta(ABCMeta): def __instancecheck__(cls, instance): # monkeypatching class method cls.__subclasscheck__ = super(Meta, cls).__subclasscheck__ return super(Meta, cls).__instancecheck__(instance) def __subclasscheck__(cls, sub): return cls in sub.mro() class A(object): __metaclass__ = Meta class B(object): pass # registering class 'B' as a virtual subclass of 'A' A.register(B) >>> issubclass(B, A) False >>> isinstance(B(), A) # => method __subclasscheck__ is now monkeypatched True >>> issubclass(B, A) # => desire to get 'True' because 'B' is a virtual subclass False ---------- components: None messages: 146366 nosy: Artem.Tomilov priority: normal severity: normal status: open title: Monkeypatching using metaclass type: behavior versions: Python 2.7 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue13264> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com