Написать класс 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
Спойлер: