История изменений
Исправление
mashina,
(текущая версия)
:
whatever.join
Не читал ваш всю вашу увлекательную дискуссию на счёт правильного расположения join'а, мб что скажу ниже уже писали.
join() должен быть у строкового объекта по следующим причинам:
1. Соблюдение типизации и предсказуемость результата. Нельзя склеивать гетерогенный набор объектов (~объекты разных типов), т.е. не понятно что должно быть в таком случае на выходе. join(), как метод у экземпляра строки или класса (~ статический метод), проверяет чтобы было всё как нужно.
2. Особенности реализации. Какие-то объекты можно склеивать очень эффективно, какие-то нет. join(), как часть str, знает как можно эффективно это сделать. Для питона это особенно актуально, т.к. строки немутабельны.
3. join() не имеет общей семантики и общего смысла среди всех одноимённых операций и для большей части объектов такой операции вообще не существует. Потому логичнее реализовывать его как метод экземпляра или статический метод класса с описанием чего оно делает.
upd: А семантика whatever.join() называется reduce()
Исходная версия
mashina,
:
whatever.join
Не читал ваш всю вашу увлекательную дискуссию на счёт правильного расположения join'а, мб что скажу ниже уже писали.
join() должен быть у строкового объекта по следующим причинам:
1. Соблюдение типизации и предсказуемость результата. Нельзя склеивать гетерогенный набор объектов (~объекты разных типов), т.е. не понятно что должно быть в таком случае на выходе. join(), как метод у экземпляра строки или класса (~ статический метод), проверяет чтобы было всё как нужно.
2. Особенности реализации. Какие-то объекты можно склеивать очень эффективно, какие-то нет. join(), как часть str, знает как можно эффективно это сделать. Для питона это особенно актуально, т.к. строки немутабельны.
3. join() не имеет общей семантики и общего смысла среди всех одноимённых операций и для большей части объектов такой операции вообще не существует. Потому логичнее реализовывать его как метод экземпляра или статический метод класса с описанием чего оно делает.