2014-10-26 3 views
0

Можно ли добавить свою собственную функцию к уже существующему объекту?Python: Как добавить пользовательскую функцию к ранее существующему объекту?

Например, «строка» тип данных имеет встроенного в reverse() функции, в отличие от в list, не есть способ, чтобы добавить обратную функцию такую, что если у меня есть строка переменной var, var.reverse() возвращает строку в обратном порядке?

В одном случае я думаю, что это сработает, если я создаю class CustomString, который имеет те же свойства, что и строка, но с дополнительной заданной обратной функцией, возможно ли это? (Я еще не знаком с POPON OOP)

Или есть другой способ сделать это?

+0

Что вы описываете, называется «обезьяна заплат», но вы можете использовать его на строковых объектах; subclassing - ваш лучший вариант здесь. – jonrsharpe

ответ

0

Вы могли бы сделать это с помощью наследования:

class new_string(str): 
    def reverse(self): 
     blah 

s = new_string('hello') 
s.reverse() 

EDIT: Есть ли ваш код выглядеть следующим образом:

>>> class S(str): 
...  def reverse(self): 
...   return self.__str__()[::-1] 
... 
>>> s = S('hello') 
>>> s.reverse() 
'olleh' 
+0

Спасибо :), но у меня есть другой вопрос, как мне сохранить сделанные изменения? как в [здесь] (http://pastebin.com/Ct9Dd5CZ) – DarkPotatoKing

+0

нет, это выглядит как [это] (http://pastebin.com/Ct9Dd5CZ) Не могли бы вы рассказать мне, что случилось? :) Я хочу, чтобы 'reverse()' был процессом, который меняет саму строку вместо того, чтобы возвращать копию строки в обратном порядке. – DarkPotatoKing

+1

Это действительно должно быть открыто как новый вопрос – IanAuld