Seite 1 von 1

subklasse mit __new__ und __slots__

Verfasst: Montag 6. Juli 2015, 10:12
von init-0
Hi,

ich benutze sympy und würde gerne eine Subklasse von Integer erstellen.
Leider verwendet diese Klasse __new__ und __slots__ zusammen und ich möchte ein neues Attribut hinzufügen.

Code: Alles auswählen

class fieldNumber(Integer):
        #__slots__ = Integer.__slots__ + ["field"]
        def __new__(self, *args, field=None, **kwargs):
            r = Integer.__new__(self, *args, **kwargs)
            if field is None:
                field = Field()
            r.field = self.field = field # r has no attribute error
            return r
Ich würde gerne die slots der Klasse verändern, aber da das afaik nur durch subclassing geht, was durch das __new__ ignoriert wird, weiß ich nicht wie ich das machen soll.

Re: subklasse mit __new__ und __slots__

Verfasst: Montag 6. Juli 2015, 13:20
von Sirius3
@init-0: bei __new__ heißt der erste Parameter cls, weil er die zu erzeugende Klasse enthält. Und warum sollte man in __new__ eine Klassenvariable erzeugen? Und wo hast Du jetzt ein Problem, wenn Du __slots__ erweiterst? Bei mir tut das.