Изменить или переопределить str из метода подкласса - PullRequest
0 голосов
/ 24 января 2019

У меня была проблема с переопределением str в моем унаследованном классе.Есть ли способ сделать что-то подобное?

class Sentence(str):

    def input(self, msg):
        """Extend allow to hold one changing object for various strings."""
        self = Sentence(input(msg))

    def simplify(self):
        self = self.lower()
        self.strip()

Я хочу изменить мою строку, содержащуюся в этом классе, для различного использования.Есть способ сделать это?Потому что я много чего пробовал из стека, и никто мне не помог.

@ Edit:

Существует объяснение того, что я хочу сделать: в init я инициализирую класс предложения:

self.sentence = Sentence("") 

Mainloop,где пользователь может изменить предложение:

self.sentence.input("Your input:")

После этого я хочу упростить строку для alghoritm:

self.sentence.simplify()

И все, после этого я хочу использовать self.sentence как строку.


Но в обоих методах:

    def input(self, msg):
        """Extend allow to hold one changing object for various strings."""
        self = Sentence(input(msg))

    def simplify(self):
        self = self.lower()
        self.strip()

Строка не была изменена.

1 Ответ

0 голосов
/ 24 января 2019

Из-за того, что языки оптимизации, такие как Python, работают со строками (т. Е. Они неизменяемы, поэтому одну и ту же строку можно использовать повторно), я не думаю, что это хорошая практика для наследования от str, вместо этого вы можете написать класс, который переноситстрока:

class Sentence:
    def __init__(self, msg: str):
        self.msg = msg

    def simplify(self):
        self.msg = self.msg.lower().strip()

Таким образом, вы можете улучшить свою реализацию, если, например, вы слишком часто меняете строку и сталкиваетесь с проблемами производительности.

...