栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将方法添加到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.xMyClass.new_method = new_methodobj.new_method()

这怎么工作?当您键入

obj.new_method()

Python将执行以下操作:

  1. new_method
    在物体内寻找
    obj

  2. 找不到它作为实例属性时,它将尝试在可

    obj.__class__
    找到函数的类对象(可作为)中查找。

  3. 现在有些麻烦了,因为Python会注意到它发现的是一个 函数 ,因此会将其“包装”在一个闭包中以创建所谓的“绑定方法”。这是必需的,因为调用

    obj.new_method()
    时要调用
    MyClass.new_method(obj)
    …换句话说,就是将函数绑定到
    obj
    以创建绑定的方法,这是添加
    self
    参数所需要的。

  4. 此绑定方法是所返回的

    obj.new_method
    ,然后由于
    ()
    该行代码的结尾而最终将调用此方法。

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661811.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号