• 绑定方法 与 非绑定方法


    类中定义函数分为了两大类:

    1. 绑定方法

        特殊之处:  绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数自动传入

        绑定给 对象 的方法: 在类中定义函数没有被任何装饰器修饰的情况下,默认就是绑定对象的

        绑定给 的方法: 为类中定义函数添加一个装饰器classmethod,就是绑定类的

    2. 非绑定方法

        特殊之处: 非绑定方法就是一个普通函数,既不与类绑定又不与对象绑定,意味着类与对象都可以调用,但是无论谁来调用都是一个普通函数,没有自动传值效果

        绑定方法: 为类中定义函数添加一个装饰器staticmethod,就是非绑定方法

     ps:  区分时看 有没有 自动传入

    #绑定 绑定方法与非绑定方法
    class Foo:
        def func(self):       #绑定给 对象的方法 类也可以调用,但是类调用就是一个普通函数,没有自动传值的效果
            print('func',self)
    
        @classmethod     #绑定给 类的的方法 
      def func1(cls): print('func1',cls) @staticmethod #非绑定方法, 普通函数
      def func3(x,y): print(x,y)
    obj = Foo()

    obj.func()
    Foo.func1()
    obj.func1()
    obj.func3(1,2)
    Foo.func3(1,2)


    结果:
    func <__main__.Foo object at 0x000001F4111D7A58>
    func1 <class '__main__.Foo'>
    func1 <class '__main__.Foo'>
    1 2
    1 2

    总结:

       1、绑定给对象的,应该由对象来调

    ps:绑定给对象的方法,类也可以调用,但是类调用就是一个普通函数,没有自动传值的效果

       2、绑定给类的,应该由类来调

  • 相关阅读:
    es6中promise的实现及原理
    移动端
    javascript知识点复习
    html和css基本常识总结
    kafka,查看指定group下topic的堆积数量
    解决问题:Android设备运行自动化脚本报错 ioerror RPC server not started
    linux下安装python3
    使用vsftpd搭建FTP服务
    前端性能监控平台showslow+Yslow搭建
    学习笔记-- Python网络编程
  • 原文地址:https://www.cnblogs.com/TF511/p/9850103.html
Copyright © 2020-2023  润新知