l'héritage de str ou int

Pourquoi j'ai des problèmes pour créer une classe héritant de str (ou int)

class C(str):
   def __init__(self, a, b):
     str.__init__(self,a)
     self.b = b

C("a", "B")

TypeError: str() takes at most 1 argument (2 given)

tha même si j'essaie d'utiliser int au lieu de str, mais il fonctionne avec des classes personnalisées. J'ai besoin d'utiliser __new__ au lieu de __init__? pourquoi?