• 动态绑定允许我们在程序运行的过程中动态给class加上功能,这在静态语言中很难实现


    https://www.liaoxuefeng.com/wiki/

    # 正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,
    # 这就是动态语言的灵活性。先定义class
    class Student(object):
        pass
    
    
    s = Student()
    # 动态给实例绑定一个属性
    s.name = 'Kate'
    
    def set_age(self,age):
        self.age = age
    
    from types import MethodType
    
    s.set_age = MethodType(set_age,s)
    s.set_age(25)
    from types import MethodType
    
    
    # 定义一个函数作为实例方法
    def set_get_diff_page_xpath_res(self, func):
        self.xpath_res = func
    
    
    # 兼容不同页面xpath的类
    class spider_diff_page(object):
        pass
    
    
    instance_page_res = spider_diff_page()
    
    # 给实例绑定一个处理不同页面xpath的方法
    instance_page_res.xpath_res = MethodType(set_get_diff_page_xpath_res, instance_page_res)
    
    
    def deal_diff_page(page):
        return '%s%s' % (page, 'ZEBRA-TEACHER')
    
    
    page = 'amazon.uk'
    instance_page_res.xpath_res(deal_diff_page(page))
  • 相关阅读:
    关于dependency的scope
    Enum
    vim
    postgres函数
    Static块与线程安全
    查看文件夹及文件大小df du
    mac下安装jdk
    硬盘修复原理
    关于Jquery的Accordion在IE下闪烁,不稳定的问题
    vmare安装linux问题总结4(redhat在启动时卡在sendmail很久)
  • 原文地址:https://www.cnblogs.com/rsapaper/p/7846407.html
Copyright © 2020-2023  润新知