Python, operator overload för dict i en class

Permalänk
Medlem

Python, operator overload för dict i en class

Jag vill ändra vad += operatorn gör på element i en dict i en specifik klass. När ett värde i en dict uppdateras så finns conditions kring om ett befintligt värde ska uppdateras eller ej, samt OM det uppdateras så måste det ERSÄTTAS, inte konkatineras som Python gör med strängar annars. Jag såg för mig att det funkar såhär typ:

#!/usr/bin/env python class Host: def __init__(self) -> None: apa = {'descr': ''} h = Host() h.apa['descr'] = 'First descr' h.apa['descr'] += 'Second descr' print(h.apa['descr']). # Printar ut 'Second descr'

Jag tänkte det var enkelt genom att overload'a __iadd__():

#!/usr/bin/env python class Host: def __init__(self) -> None: apa = {'descr': '', 'age': ''} def __iadd__(self, other): self.value = str(other) if (self.value == '' or self.value == '-') and (other != '' and other != None) else self.value return self.value

... men det var ju tankevurpa deluxe, det är inte Hostobjektet jag vill ändra += på utan alla dict som finns i den. Nånstans där fick jag slut på både IQ och googletalang.

Visa signatur

ecce
#NATisNotASecurityFeature

Permalänk
Medlem

Skapa din egen dict objekt typ genom att ärva dict så kan du göra vad du vill med den.