当前位置: 首页 > 面试题库 >

向字符串对象添加自定义方法

华修永
2023-03-14
问题内容

在Ruby中,您可以使用自定义方法覆盖任何内置对象类,如下所示:

class String
  def sayHello
    return self+" is saying hello!"
  end
end

puts 'JOHN'.downcase.sayHello   # >>> 'john is saying hello!'

我如何在python中做到这一点?有正常的方法还是黑客?


问题答案:

您不能这样做,因为内建类型是用C编码的。您可以对类型进行子类化:

class string(str):
    def sayHello(self):
        print(self, "is saying 'hello'")

测试:

>>> x = string("test")
>>> x
'test'
>>> x.sayHello()
test is saying 'hello'

您还可以使用来覆盖str-type class str(str):,但这并不意味着您可以使用文字"test",因为它链接到内建的str

>>> x = "hello"
>>> x.sayHello()
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    x.sayHello()
AttributeError: 'str' object has no attribute 'sayHello'
>>> x = str("hello")
>>> x.sayHello()
hello is saying 'hello'


 类似资料:
  • 问题内容: 有没有一种方法可以为查询对象创建自定义方法,以便您可以执行以下操作? 本质上在哪里 并能够过滤掉它吗? 问题答案: 您可以对基类进行子类化以添加自己的方法: 然后,您可以在创建会话时告诉SQLAlchemy使用此新查询类(此处的文档)。从您的代码看来,您可能正在使用Flask- SQLAlchemy,因此您可以按照以下步骤进行操作: 否则,您将参数直接传递给: 到目前为止,这个新的查询

  • 假设我在一个数组列表中添加了2个用户Apple和Orange。然后我想将牛顿添加到苹果的朋友列表中。所以苹果应该有1个朋友,而橙色仍然没有任何朋友,因为我还没有添加他们。 我的问题是,当我把牛顿添加到苹果的朋友中时,牛顿也会出现在orange的朋友中。我只需要一个朋友出现在苹果和橙色没有。 我认为这是我为用户的朋友设置arraylist的方式,但我不确定如何更改它。

  • 我正在使用wordpress 4.1与ACF v4。我有一个添加了自定义字段的自定义帖子类型,每次添加新类别时都需要添加新的自定义字段。如果我自动添加类别“轿车”,我必须添加自定义字段“轿车”。我可以使用插件函数执行此操作吗?或者我必须用代码,在数据库中插入来做到这一点?提前致谢!!

  • 问题内容: 假设我有一个对象 如何通过添加方法扩展该对象,并确保将来的实例具有此方法? 问题答案: 您需要将其添加到Foo的原型中:

  • 我正在尝试添加一个自定义字段到忍者表单(第3.3节)。到处都找不到完整的例子。 仔细查看代码,似乎过滤器'ninja_forms_register_fields'可以起到作用,但我无法让它在任何地方运行。

  • 我必须将自定义方法方法添加到我的日志系统中。假设我有几行代码,例如: 日志记录由slf4j处理。如何通过添加新(!)扩展我的记录器方法,如public void error(SomeTypeObject obj){/implementation/} 目标是不更改现有代码。如何强制LoggerFactory返回使用上述方法扩展的自己的记录器实现? 我跟踪了这个问题的答案:stackoverflow.