ksenofobius
@ksenofobius
Люблю долбить по клавишам

Как переопределить Init в Python в унаследованном от str классе?

нужно чтобы возвращаемый объект был типа str, как я понял init переопределить нельзя, пытаюсь сделать через new, однако не получается передать **kwargs в новый класс
class MyClass(string):
    def __new__(cls, total_key, *args, **kwargs):
        # explicitly only pass value to the str constructor
        return super(MyClass, cls).__new__(cls, total_key, **kwargs)

    def __init__(self, total_key, **kwargs):
        self.dict = kwargs
...
MY_dict = {'a':1, 'b':2...}
test = MyClass('some_str', **dict)
print(type(test))

Собственно вопрос, как в унаследованный класс от str добавить свои аргументы? В частности интересует передача словаря.
  • Вопрос задан
  • 758 просмотров
Пригласить эксперта
Ответы на вопрос 1
@maxfox
Вам стоит почитать на тему "duck typing".
В Python вам не нужно возвращать объект типа str, вам нужно возвращать объект, реализующий методы str. Понимание этого приципа крайне важно для работы с Python.
Ну и прекратите переопределять зарезервированные имена, зачем все это делают, другие названия, помимо dict, list и т.п. вообще в голову не приходят?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы