美文网首页
python 动态添加实例方法和类方法

python 动态添加实例方法和类方法

作者: 逐风细雨 | 来源:发表于2021-10-21 18:26 被阅读0次

    通过 types 模块动态添加实例方法和类方法的实践笔记

    import types
    
    
    class Person:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
        def speak_age(self):
            print(f"age is {self.age}")
    
    
    def speak_name(self):
        print(f"name is {self.name}")
    
    
    @staticmethod
    def add_static_method():
        print("call add_static_method")
    
    
    @classmethod
    def add_class_method(cls):
        print("call add_class_method")
    
    
    if __name__ == "__main__":
        tom = Person("tom", 30)
        tom.speak_age()
        # 添加实例方法,并调用
        tom.speak_name = types.MethodType(speak_name, tom)
        tom.speak_name()
    
        # 添加静态方法
        Person.add_static_method = add_static_method
        # 添加类方法
        Person.add_class_method = add_class_method
        tom.add_static_method()
        tom.add_class_method()
        # 新实例依然可以调用
        ana = Person("ana", 18)
        ana.add_static_method()
    
    

    运行后控制台输出


    image.png

    相关文章

      网友评论

          本文标题:python 动态添加实例方法和类方法

          本文链接:https://www.haomeiwen.com/subject/cnfqaltx.html