是否可以为python内置类型添加扩展方法?我知道我可以通过简单地添加新方法来将扩展方法添加到已定义的类型.如下:
class myClass:
pass
myClass.myExtensionMethod = lambda self,x:x * 2
z = myClass()
print z.myExtensionMethod(10)
Run Code Online (Sandbox Code Playgroud)
但是有没有办法将扩展方法添加到python built'in类型,如list,dict,...
list.myExtension = lambda self,x:x * 2
list.myExtension(10)
Run Code Online (Sandbox Code Playgroud) 当我执行以下操作时:
class C:
pass
def f( self ):
print self
a = C()
a.f = f
a.f()
Run Code Online (Sandbox Code Playgroud)
我在第af()行得到以下错误:TypeError:f()只取1个参数(给定0)
问题似乎是当f被添加到实例a时,它被视为存储在a而不是实际成员函数内的函数.如果我将af()更改为af(a),那么我得到了预期的效果,但有没有办法让python以这种方式解释原始示例?换句话说,有没有办法在运行时将成员函数添加到类的实例?
谢谢
python ×2