TypeError: 'kwarg' is an invalid keyword argument for this function

Terry Reedy tjreedy at udel.edu
Sun Oct 12 20:49:09 EDT 2014


On 10/12/2014 2:45 PM, Ian Kelly wrote:
> On Sun, Oct 12, 2014 at 6:55 AM, roro codeath <rorocodeath at gmail.com> wrote:
>> How to implement it in my class?
>>
>> class Str(str):
>>      def __init__(self, *args, **kwargs):
>>          pass
>>
>> Str('smth', kwarg='a')
>
> The error is coming from the __new__ method. Because str is an
> immutable type, you should override the __new__ method, not __init__.

or, if one is mere adding a method, do not add __new__ either.

> Example:
>
> class Str(str):
>      def __new__(cls, *args, **kwargs):
>          return super().__new__(cls, args[0])
>
>>>> Str('smth', kwarg='a')
> 'smth'
>


-- 
Terry Jan Reedy




More information about the Python-list mailing list