Написать класс DivStr(str), полностью (за исключением правых операций со строками и split()/splitlines()) воспроизводящий работу str. Дополнительно класс должен поддерживать операцию деления «/n», где n — натуральное число, которая должна возвращать n-ю часть от начала строки (если не делится, округлённую в меньшую сторону, если n>len(s) — пустую строку). Задача в том, чтобы любое возвращаемое методами значение типа str превращалось в DivStr. Согласно документации, мы не можем подсунуть методы, начинающиеся на «__», прямо в __dict__, или поймать __getattr__-ом, или даже __getattribute__-ом, а должны задать их явно, например, с помощью def. С другой стороны, руками все методы перебивать не хочется. См. далее.

Подсказка: для всех методов (кроме нескольких, пречисленных в спойлере) будет единственная обёртка: вызвать соответствующий метод str со всеми параметрами, и если он вернул объект типа str, обернуть в DivStr, а остальное оставить без изменения.

s = DivStr("Qwertupy")
print(len(s))
print(s*3/2)
print((s+"ZZZZZZZZZZ")/2)
print(s[3:]/2)
print(s[0].join("12345678")/2) 

8
QwertupyQwer
QwertupyZ
rt
1Q2Q3Q4

Спойлер:


CategoryHomework

LecturesCMC/PythonIntro2019/Homework_DivStr (последним исправлял пользователь FrBrGeorge 2019-12-02 11:30:05)