zoukankan      html  css  js  c++  java
  • 绑定方法与非绑定方法;classmethod及staticmethod装饰器

    绑定方法与“非绑定方法”

    一、绑定方法:绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数传入
       1. 绑定给对象的方法: 类中定义的函数默认就是绑定给对象的
       2. 绑定给类的方法: 为类中定义的函数加上一个装饰器classmethod 

    二、“非绑定方法”:既不与类绑定,又不与对象绑定,意味着对象和类都可以来调用,无论谁来调用都是一个普通的函数,没有自动传值的效果

    效果如下:

    class Foo:
       def f1(self):
         print(self)
    
       @classmethod
       def f2(cls):
         print(cls)
    
       @staticmethod
       def f3(x,y):
         print('f3',x+y)
    
    
     obj=Foo()
     print(Foo.f2)
     Foo.f2()
     print(obj.f2)
     obj.f2()
    
     print(Foo.f3)
     print(obj.f3)
    
     Foo.f3(1,2)
     obj.f3(3,4)

    classmethod装饰器

    @classmethod

    作用:哪个类来调用,就将哪个类当做第一个参数传入

    staticmethod装饰器

    @staticmethod

    作用:把类中的函数装饰为非绑定方法

     效果如下:

    class Foo:
    
        def f1(self):
    
            print(self)
    
     
    
        @classmethod
    
        def f2(cls):
    
            print(cls)
    
     
    
        @staticmethod
    
        def f3(x,y):
    
            print('f3',x+y)
    
     
    
     
    
    obj=Foo()
    
     
    
    obj.f1()     #输出结果:<__main__.Foo object at 0x02FDFEB0>
    
    Foo.f2()     #输出结果:<class '__main__.Foo'>
    
    obj.f2()     #输出结果:<class '__main__.Foo'>
    
    Foo.f3(1,2)     #输出结果:f3 3
    
    obj.f3(3,4)     #输出结果:f3 7
    View Code
  • 相关阅读:
    C#脚本引擎 CS-Script 之(一)——初识
    系分过了,mark一下,就从这里开始吧
    Git.Framework 框架随手记-- 分享一个"比较垃圾"的项目
    Android--多选自动搜索提示
    Android--自动搜索提示
    Android--图片集
    Android--下拉框
    SQL Server 收缩日志
    Android--按钮点击事件
    Android--TextView 文字显示和修改
  • 原文地址:https://www.cnblogs.com/Mister-JH/p/9520033.html
Copyright © 2011-2022 走看看