Как создать новый метод list по подобию с функционалом JS?

В JS одним легким движением руки я могу создать новый метод для строк, массивов и т.п
Array.prototype.newMethod=function () {
    for (let foo=0;foo<this.length;foo++)
    {
        this[foo]=this[foo]/2;
    }
    return this
};
console.log([1,2,3,4,5,6,7].newMethod());
/*return:  [0.5, 1, 1.5, 2, 2.5, 3, 3.5]*/


Т.е условно по этому образу и подобию необходимо сделать также, только на Python. Это очень удобная штука от которой сложно отказаться)))
  • Вопрос задан
  • 113 просмотров
Решения вопроса 2
yupiter7575
@yupiter7575
Python программист
Я не уверен но вроде надо унаследовать класс:
class List(list):
    def newMethod(self):
        pass
Ответ написан
MinTnt
@MinTnt
На прямую в built-in object что-то изменить нельзя. Как и нельзя к примеру удалить уже существующий метод, по типу sort, reverse для списков.

Можно лишь создать экземпляр класса, который за основу берёт нужный объект, и в него вписать требуемые для кода функции. А дальше, когда необходима добавленная функция, создавать нужные объекты через этот же класс.

К примеру:
class UpgradeList(list):


    def up_lst(self):
        return [x.upper() for x in self]


a = UpgradeList(['test', 'cake', 'sake', 'voka'])
print(a.up_lst())
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы