class Meta(type):
    def __new__(meta, classname, supers, classdict):        # Ponowne zdefiniowanie metody typu
        print('W Meta.new:', classname)
        return type.__new__(meta, classname, supers, classdict)
    def meth3(self):
        return 'trzy!'

class Super(metaclass=Meta):           # Metaklasa dziedziczy również po klasie podrzędnej
    def meth2(self):                   # Meta wykonuje się dwa razy dla dwóch metaklas
        return 'dwa!'

class Sub(Super):                      # Klasa nadrzędna - dziedzicznie kontra instancja
    def meth1(self):                   # Klasy dziedziczą po klasach nadrzędnych
        return 'raz!'                  # Ale nie z metaklas dla dostępu do instancji

