Мне нужен класс, который ведет себя как строка, но также принимает дополнительные kwargs
. Therefor I подкласс str
:Создайте дочерний элемент str (или int или float или tuple), который принимает kwargs
class Child(str):
def __init__(self, x, **kwargs):
# some code ...
pass
inst = Child('a', y=2)
print(inst)
Это, однако, вызывает:
Traceback (most recent call last):
File "/home/user1/Project/exp1.py", line 8, in <module>
inst = Child('a', y=2)
TypeError: 'y' is an invalid keyword argument for this function
Что довольно странно, так как код ниже работает без каких-либо ошибок:
class Child(object):
def __init__(self, x, **kwargs):
# some code ...
pass
inst = Child('a', y=2)
Вопросы:
- Почему я получаю различное поведение при попытке создать подкласс
str
,int
,float
,tuple
и т.д. по сравнению с другими классами, какobject
,list
,dict
и т.д.? - Как создать класс, который ведет себя как строка, но имеет дополнительных kwargs?
может быть что-то о методах '__str__' или' __unicode__', которые необходимо переопределить –