Es ist nicht möglich, das zu tun, was Sie hier versuchen, da ganze Zahlen in Python unveränderlich sind. Sobald sie erstellt wurden, können sie nicht mehr geändert werden.
Von Python Documentation
Der Wert einiger Objekte ändern können. Objekte, deren Wert sich ändern kann, werden als veränderbar bezeichnet; Objekte, deren Wert unveränderbar ist, sobald sie erstellt wurden, werden unveränderlich genannt. ...Die Veränderlichkeit eines Objekts wird durch seinen Typ bestimmt; zum Beispiel sind Zahlen, Strings und Tupel unveränderlich, während Wörterbücher und Listen änderbar sind.
Je nachdem, was Sie vorhaben, diese zu verwenden, für das, was Sie stattdessen tun könnte, ist die folgende:
class Counter(object): # new style object definition.
def __init__(self, num):
self.value = num
# this is 32bit int max as well, same as pow(2,32) function.
self.maximum = 0xFFFFFFFF
def increase(self):
self.value += 1
if self.value > self.maximum:
self.value -= self.maximum
def __repr__(self): # representation function.
return str(self.value)
def __str__(self): # string function
return str(self.value)
counter = Counter(10)
print counter
counter.increase()
print counter
counter.increase()
print counter
scheint wie eine seltsame Idee 'int' zu erben. Warum haben Sie nicht einfach ein 'int' Attribut? – erip
Es ist auch keine gute Idee, jedes Mal 'maximum' zu berechnen. – erip