Como faço para herdar corretamente de uma superclasse que tem um método __new__?
Vamos supor que temos uma classe 'Pai', que por alguma razão tem__new__
definida e uma classe 'Criança' que herda dela. (No meu caso eu estou tentando herdar de uma classe de terceiros que não posso modificar)
class Parent:
def __new__(cls, arg):
# ... something important is done here with arg
Minha tentativa foi:
class Child(Parent):
def __init__(self, myArg, argForSuperclass):
Parent.__new__(argForSuperclass)
self.field = myArg
Mas enquanto
p = Parent("argForSuperclass")
funciona como esperado
c = Child("myArg", "argForSuperclass")
falha, porque 'Child' tenta chamar o__new__
método que herda de 'pai' em vez de seu próprio__init__
método.
O que eu tenho que mudar em 'Child' para obter o comportamento esperado?