подфункция / управление классом встроенных функций в python - PullRequest
1 голос
/ 10 марта 2020

для моего мастерства я работаю с пакетами vmtk и vtk. В настоящее время я пытаюсь выяснить, как предложить пользователю ввести строку в vtkRenderWindow. К сожалению, в vtk нет ни встроенного метода, ни практического примера кода для достижения этой цели. К счастью, более или менее, пакет vmtk предлагает такую ​​функцию. Поскольку это в конечном итоге станет более базовым c вопросом, чем кажется сейчас, я не думаю, что вообще нужно знать пакет vmtk, чтобы относиться к моему вопросу.

Исходный код функции соответствующей функциональности в vmtk выглядит следующим образом:

def InputText(self,prompt='',validator=None):
    self.OutputText(prompt)
    try:
        self.InputStream.prompt(prompt)
    except:
        pass
    text = self.InputStream.readline()
    if text:
        text = text.rstrip('\n')
    if validator:
        while not validator(text):
            self.OutputText(prompt)
            try:
                self.InputStream.prompt(prompt,info=False)
            except:
                pass
            text = self.InputStream.readline()
            if text:
                text = text.rstrip('\n')
    return text

Валидатор является побочной функцией для проверки ввода и не интересует нас и этот момент. self.InputStream определяется в init как: self.InputStream = sys.stdin

На данный момент это расстраивает, по крайней мере, для меня. И позвольте мне сказать, что я совсем не опытный программист, в лучшем случае средний.

Для чтения строки и удаления части мне кажется логичным. Он в основном читает строку / слово, которое было введено в InputStream, и удаляет символ новой строки.

Моя проблема в том, что вызывается подсказка «подфункция». Этот атрибут не существует для sys.stdin ... И я уверен, что это именно та функция, которую я ищу.

Так есть ли способ переопределить основные функции c в python? Потому что, если этот атрибут не существует во встроенном пакете sys, он должен быть добавлен или переопределен где-то в скрипте или импортированных скриптах (а я не могу его найти).

...