Op 17-03-16 om 00:14 schreef Chris Angelico: > def monkeypatch(cls): > orig = globals()[cls.__name__] > print("Monkeypatch",id(cls),"into",id(orig)) > for attr in dir(cls): > if not attr.startswith("_"): > setattr(orig,attr,getattr(cls,attr)) > return orig > > class Foo: > def method1(self): > print("I am method 1") > > print("Foo is currently",id(Foo)) > some_object = Foo() > > @monkeypatch > class Foo: > def method2(self): > print("I am method 2") > > print("Foo is now",id(Foo)) > > some_object.method1() > some_object.method2()
This seems close enough as far as I am concerned. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= def monkeypatch(cls, orig): print("Monkeypatch",id(cls),"into",id(orig)) for attr in dir(cls): if not attr.startswith("_"): setattr(orig,attr,getattr(cls,attr)) return orig class Foo: def method1(self): print("I am method 1") print("Foo is currently",id(Foo)) some_object = Foo() class Foo2: def method2(self): print("I am method 2") monkeypatch(Foo2, Foo) print("Foo is now",id(Foo)) some_object.method1() some_object.method2() -- https://mail.python.org/mailman/listinfo/python-list