例如,假设我想添加一个helloWorld()
Python 的 dict 类型的方法。我可以这样做吗?
JavaScript 有一个以这种方式运行的原型对象。也许这是糟糕的设计,我应该对 dict 对象进行子类化,但它只适用于子类,我希望它适用于任何和所有未来的字典。
下面是它在 JavaScript 中的运行方式:
String.prototype.hello = function() {
alert("Hello, " + this + "!");
}
"Jed".hello() //alerts "Hello, Jed!"
这是一个有用的链接,其中包含更多示例 -http://www.javascriptkit.com/javatutors/proto3.shtml http://www.javascriptkit.com/javatutors/proto3.shtml
您不能直接将方法添加到原始类型。但是,您可以对该类型进行子类化,然后在内置/全局命名空间中替换它,这可以实现大部分所需的效果。不幸的是,通过文字语法创建的对象将继续是普通类型,并且不会具有新的方法/属性。
这是它的样子
# 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'
"""
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)