python如何在运行时更改方法的功能

use*_*638 6 python

想知道在运行期间是否可以改变方法的功能化,例如

x = obj1 + obj2
return x+y
Run Code Online (Sandbox Code Playgroud)

而你想要添加

x = obj1 + obj2
x+= obj3
return x+y
Run Code Online (Sandbox Code Playgroud)

650*_*502 15

在python类中,只是可以在运行时更改的对象.例如:

class Dog:
    def talk(self):
        print "bark"
dog1 = Dog()
dog1.talk()  # --> Bark

def cat_talk(self):
    print "Meow"

Dog.talk = cat_talk
dog1.talk()  # --> Meow
Run Code Online (Sandbox Code Playgroud)

但是,你不想做这样的事情或谁就将不得不维持或调试这个程序肯定会试图杀死你(这家伙很可能是你自己)

  • 哈哈哈,喜欢。如此真实 (2认同)

nos*_*klo 5

一切皆有可能,您可以在运行时进行堆栈操作和插入字节码。看到类似的东西byteplay

但为什么??

这种修改不直观且不可读,最好x += obj3先离开那里,并设置obj30; 当你需要那条线做某事时,你在obj3...上使用一个非零值。