types.MethodType
types.MethodType 是 Python 中的一个内置函数,它用于将一个函数绑定到一个对象上,使其成为该对象的方法。这在动态地添加或修改对象方法时非常有用。
以下是 types.MethodType 的一些常见用法:
1.为实例方法动态添加方法
你可以将一个函数绑定到一个类的实例上,使其成为该实例的方法。例如:
import typesclass MyClass:def __init__(self, name):self.name = namedef my_method(self):print(f"Hello, {self.name}!")obj = MyClass("Kimi")
obj.my_method = types.MethodType(my_method, obj)
obj.my_method() # 输出: Hello, Kimi!
2 为类方法动态添加方法
你也可以将一个函数绑定到类上,使其成为类方法。例如:
class MyClass:def __init__(self, name):self.name = name@classmethod
def class_method(cls):print(f"This is a class method of {cls.__name__}")MyClass.class_method = types.MethodType(class_method, MyClass)
MyClass.class_method() # 输出: This is a class method of MyClass
注意事项:
- 当你使用
types.MethodType为实例添加方法时,这个方法只会绑定到那个特定的实例上,而不会影响类的其他实例。 - 如果你想要为所有实例添加相同的方法,你需要将方法绑定到类上。
在我们推理的时候,使用types.MethodType可以动态的为某个模块,绑定forward方法,如下所示,使用起来非常方便
self.pv2bev._forward_single_cam = types.MethodType(_forward_single_cam, self.pv2bev)
_m.forward = types.MethodType(_f, _m)
https://zhuanlan.zhihu.com/p/668280709
