【问题标题】:Python: How to add a custom function to a pre-existing object?Python:如何将自定义函数添加到预先存在的对象?
【发布时间】:2014-10-26 07:12:24
【问题描述】:

是否可以将您自己的自定义函数添加到已经存在的对象中?

例如,'string' 数据类型没有内置的reverse() 函数,不像list,有没有办法添加一个反向函数,如果我有一个字符串变量var,@987654324 @反向返回字符串?

我认为这可行的一种方法是,如果我创建一个class CustomString,它具有与字符串相同的属性但具有附加定义的反向函数,这可能吗? (我对 Python OOP 还不熟悉)

或者还有其他方法吗?

【问题讨论】:

  • 你所描述的被称为“猴子补丁”,但你不能在字符串对象上使用它;子类化是您最好的选择。

标签: python function class object methods


【解决方案1】:

您可以使用继承来做到这一点:

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

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

编辑:您的代码是否如下所示:

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

【讨论】:

  • 谢谢 :) 但我还有一个问题,如何保存所做的更改?如here
  • 不,它看起来像this 你能告诉我有什么问题吗? :) 我希望reverse() 是一个反转字符串本身的过程,而不是反向返回字符串的副本。
  • 这真的应该作为一个新问题打开
  • 好的,我明白了,谢谢 :) 在帖子限制到期后,我会提出这个新问题。
  • @DarkPotatoKing Python 字符串是不可变的,所以我不确定你是否能够完成你想做的事情。
猜你喜欢
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 2016-01-05
相关资源
最近更新 更多