Я пытаюсь подклассифицировать объект 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__()
правильно?