您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将方法添加到python中加载的类/模块

将方法添加到python中加载的类/模块

在Python中,import语句用于模块,而不是类……因此要导入类,您需要

from mymodule import MyClass

对于您的问题,答案是肯定的。在Python中,类只是常规对象,而类方法只是存储在对象属性中的函数

此外,Python中对象实例的属性是动态的(您可以在运行时添加新的对象属性),并且这一事实与前一个事实相结合,意味着您可以在运行时向类添加方法

class MyClass:
    def __init__(self, x):
        self.x = x

...

obj = MyClass(42)

def new_method(self):
    print "x attribute is", self.x

MyClass.new_method = new_method

obj.new_method()

这怎么工作?当您键入

obj.new_method()

Python将执行以下操作:

new_method在物体内寻找obj

找不到它作为实例属性时,它将尝试在可obj.__class__找到函数的类对象(可作为)中查找。

现在有些麻烦了,因为Python会注意到它发现的是一个 ,因此会将其“包装”在一个闭包中以创建所谓的“绑定方法”。这是必需的,因为调用obj.new_method()时要调用MyClass.new_method(obj)…换句话说,就是将函数绑定到obj以创建绑定的方法,这是添加self参数所需要的。

此绑定方法是所返回的obj.new_method,然后由于()该行代码的结尾而最终将调用方法

如果对类的搜索也没有成功,那么父类也将按照特定的顺序进行搜索,以找到继承的方法属性,因此事情会稍微复杂一些。

python 2022/1/1 18:43:44 有293人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶