class MySet(frozenset): def __new__(cls, vals): print("__new__(%r, %r)" % (cls, vals, )) return frozenset.__new__(cls, vals) def __init__(self, vals): print("__init__(%r, %r)" % (self, vals, )) x = MySet((3, 4)) y = MySet((4, 2)) z = x.difference(y) print(type(z), repr(z))