gpt4 book ai didi

python - 我可以将自定义方法/属性添加到内置 Python 类型吗?

转载 作者:IT老高 更新时间:2023-10-28 20:21:47 25 4
gpt4 key购买 nike

例如——假设我想向 Python 的 dict 类型添加一个 helloWorld() 方法。我可以这样做吗?

JavaScript 有一个以这种方式运行的原型(prototype)对象。也许这是糟糕的设计,我应该将 dict 对象子类化,但它只适用于子类,我希望它适用于任何和所有 future 的字典。

这是它在 JavaScript 中的表现:

String.prototype.hello = function() {
alert("Hello, " + this + "!");
}
"Jed".hello() //alerts "Hello, Jed!"

这是一个包含更多示例的有用链接— http://www.javascriptkit.com/javatutors/proto3.shtml

最佳答案

您不能直接将方法添加到原始类型。但是,您可以对该类型进行子类化,然后在内置/全局命名空间中替换它,这可以实现大部分所需的效果。不幸的是,由文字语法创建的对象将继续是 vanilla 类型,并且不会有您的新方法/属性。

这就是它的样子

# Built-in namespace
import __builtin__

# Extended subclass
class mystr(str):
def first_last(self):
if self:
return self[0] + self[-1]
else:
return ''

# Substitute the original str with the subclass on the built-in namespace
__builtin__.str = mystr

print str(1234).first_last()
print str(0).first_last()
print str('').first_last()
print '0'.first_last()

output = """
14
00

Traceback (most recent call last):
File "strp.py", line 16, in <module>
print '0'.first_last()
AttributeError: 'str' object has no attribute 'first_last'
"""

关于python - 我可以将自定义方法/属性添加到内置 Python 类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4698493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com