X is not type and isinstance(X, X)

In einem früheren Blog-Artikel über Metaklassen habe ich behauptet, dass in Python die eingebaute Klasse type die einzige Klasse ist, die ihre eigene Instanz ist. Dies möchte ich jetzt korrigieren: Obwohl es wahrscheinlich stimmt, ist es nicht unmöglich Klassen zu erzeugen, die ihre eigene Instanz sind:

class T(type):
  pass

class TT(type):
  __metaclass__ = T

TT.__class__ = TT

Zugegeben, dies ist nicht der Standard-Weg, um ein Objekt einer Klasse zu erzeugen, und mir fällt jetzt aus dem Stehgreif auch nicht ein, wozu man dieses Verhalten benutzen kann (eventuell für Singletons?), aber es ist möglich.

Die erste Klasse braucht man übrigens nur, weil Python nur erlaubt, die Klasse von Objekten zu ändern, wenn sie Instanz einer Klasse sind, die in Python geschrieben ist.