__call__

class S(type):

    def __call__(self, *args, **kwargs):
        print('S')
        obj = super().__call__(*args, **kwargs)
        return obj


class A:

    def __call__(self, *args, **kwargs):
        print('A的')


class B(A):

    def __call__(self, *args, **kwargs):
        print('B的')


class C(B,metaclass=S):
    pass


q = C()

q()


原文地址:https://www.cnblogs.com/liqianxin/p/12919495.html