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

通过 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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容