Я пытаюсь подклассифицировать объект str и добавлять к нему несколько методов. Моя главная цель - научиться делать это. Где я застрял, я должен подклассифицировать строку в метаклассе и создать мой класс с этой мета или подклассом str напрямую?
А также, я думаю, мне нужно каким-то образом реализовать __new__(), потому что мои пользовательские методы изменят мой строковый объект и вернут новый mystr obj.
Мои методы класса должны быть полностью привязаны с помощью методов str и всегда должны возвращать новый экземпляр класса, когда пользовательские методы его модифицировали. Я хочу иметь возможность сделать что-то вроде этого:
a = mystr("something")
b = a.lower().mycustommethod().myothercustommethod().capitalize()
issubclass(b,mystr) # True
Я хочу иметь все возможности, которые есть у str. Например, a = mystr("something"), тогда я хочу использовать его как, a.capitalize(). mycustommethod(). ниже()
Насколько я понимаю, мне нужно реализовать __new__(). Я так думаю, потому что методы строк, вероятно, попытаются создать новые экземпляры str. Итак, если я перезаписал __new__(), они якобы вернут мой собственный класс str. Тем не менее, я не знаю, как передать аргументы моему методу __init__() класса в этом случае. И я предполагаю, что мне нужно будет использовать type(), чтобы создать новый экземпляр в методе __new__() правильно?