2

I feel like I'm losing my mind. I was working on a simple project involving a subclass of int, which may not be the best idea, but I need to inherit many of int's magic methods for integer operations.

I added a default argument wraps=True to the class' __init__ method but started getting an unexpected TypeError, where my default argument was being assumed as a keyword argument for int.

The section of the code could be simplified to this:

class MyClass(int):

    def __init__(self, a, *args, b=False, **kwargs):
        super().__init__(*args, **kwargs)
        self.a = a
        self.b = b

and for some reason b (or in my case, wraps) was being passed as a keyword argument to int, which of course, didn't work.

After some testing I found that the same problem occurred with str but not with most other classes, which means that, (I'm guessing) the problem arises from inheriting from an immutable class. Am I correct and is there a way around this problem?

Thanks in advance.

user17301834
  • 443
  • 1
  • 8

0 Answers0