美文网首页
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