I've seen a few of the answers on here regarding my error but its not helped me. I am an absolute noob at classes on python and just started doing this code back in September. Anyway have a look at my code
class SimpleCounter():
    def __init__(self, startValue, firstValue):
        firstValue = startValue
        self.count = startValue
    def click(self):
        self.count += 1
    def getCount(self):
        return self.count
    def __str__(self):
        return 'The count is %d ' % (self.count)
    def reset(self):
        self.count += firstValue
a = SimpleCounter(5)
and this is the error I get
Traceback (most recent call last):
File "C:\Users\Bilal\Downloads\simplecounter.py", line 26, in <module>
a = SimpleCounter(5)
TypeError: __init__() takes exactly 3 arguments (2 given
                The __init__() definition calls for 2 input values, startValue and firstValue.  You have only supplied one value.
def __init__(self, startValue, firstValue):
# Need another param for firstValue
a = SimpleCounter(5)
# Something like
a = SimpleCounter(5, 5)
Now, whether you actually need 2 values is a different story.  startValue is only used to set the value of firstValue, so you could redefine the __init__() to use only one:
# No need for startValue
def __init__(self, firstValue):
  self.count = firstValue
a = SimpleCounter(5)
                        Your __init__() definition requires both a startValue and a firstValue. So you'd have to pass both (i.e. a = SimpleCounter(5, 5)) to make this code work. 
However, I get the impression that there's some deeper confusion at work here:
class SimpleCounter():
    def __init__(self, startValue, firstValue):
        firstValue = startValue
        self.count = startValue
Why do you store startValue to firstValue and then throw it away? It seems to me that you mistakenly think that the parameters to __init__ automatically become attributes of the class. That's not so. You have to assign them explicitly. And since both values are equal to startValue, you don't need to pass it to the constructor. You can just assign it to self.firstValue like so:
class SimpleCounter():
    def __init__(self, startValue):
        self.firstValue = startValue
        self.count = startValue
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With