Sum of items of a class

Question:

What I have to do is to create a class that counts from a giving single argument and itself make the arithmetical operation.

class Counts:
    def __init__(self, value=0):
        self.value = value
        
    def newvalue(self, other):
        return Counts(self.value + other)

But for every I make to the code I got any different error, either syntax or callable argument.

The idea is to get

Counts()

Expected output

0

Next

Counts.newvalue(10)

Expected output

10

Next

Counts.newvalue(40)

Expected output

50

Next

Counts.newvalue(-17)

Expected output

33

And so on.

Asked By: Felipe Osorio

||

Answers:

The code that shows the expected behaviour is

class Counts:
    value = 0
    def __new__(self):
        return self.value
    
    @classmethod
    def newvalue(cls, other):
        cls.value += other
        return cls.value

however this is a somewhat strange piece of code, as you are creating a class that returns a value when initialized instead of an object deriving from that class by overriding __new__, which is pretty non-standard.

also if you want to zero the value whenever Count() is called, you can add a self.value = 0 before the return self.value

Tests ->

print(Counts())
print(Counts.newvalue(10))
print(Counts.newvalue(40))
print(Counts.newvalue(-17))

returns

0
10
50
33
Answered By: arrmansa
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.