zoukankan      html  css  js  c++  java
  • 面向对象(四)——classmethod、staticmethod装饰器(绑定方法与非绑定方法)

    classmethod、staticmethod装饰器

    一、绑定方法与非绑定方法

    1、绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入):

    (1) 绑定到类的方法:用classmethod装饰器装饰的方法。

             为类量身定制

             类.boud_method(),自动将类当作第一个参数传入

           (其实对象也可调用,但仍将类当作第一个参数传入)

    (2)绑定到对象的方法:没有被任何装饰器装饰的方法。

             为对象量身定制

             对象.boud_method(),自动将对象当作第一个参数传入

    class Foo:
        def f1(self):     # 绑定给对象的方法
            print('对象')
    
        @classmethod    # 绑定给类的方法
        def f2(cls):
            print('绑定给类')
    
    obj=Foo()
    # 绑定给对象的方法,自动传入对象 obj.f1() # 绑定给类的方法,自动传值类 Foo.f2()

    2、非绑定方法:用staticmethod装饰器装饰的方法

    (1)不与类或对象绑定,类和对象都可以调用,但是没有自动传值那么一说。就是一个普通工具而已

    class Foo:
    
         @staticmethod
        def f3(x, y, z):
            print('非绑定方法', x + y + z)
    
    
    obj=Foo()
    
    Foo.f3()     # 类可以调用
    
    obj.f3()     # 对象都可以调用

    3、注意点

    非绑定方法与绑定到对象方法区分开,在类中直接定义的函数,没有被任何装饰器装饰的,都是绑定到对象的方法,可不是普通函数,对象调用该方法会自动传值,而staticmethod装饰的方法,不管谁来调用,都没有自动传值一说

  • 相关阅读:
    vue指令参考
    jquery easyui 研究(一)Datagrid初始化设置
    HTML之响应协议
    HTTP协议之请求协议
    HTTP协议之HTTP概述
    Day18_函数定义_形参_实参_可变参数
    Day19_名称空间和作用域_函数的嵌套_函数第一类对象的使用_闭包函数
    跳转语句 break 和 continue
    JS中强制类型转换
    toString
  • 原文地址:https://www.cnblogs.com/linagcheng/p/9516662.html
Copyright © 2011-2022 走看看