• 绑定方法与非绑定方法;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
  • 相关阅读:
    layoutSubviews, setNeedsLayout, layoutIfNeeded
    UIViewController 专题
    UIBarButtonItem
    ios method swizzling
    Method Swizzling
    ios逆向工程
    IOS中通知中心NSNotificationCenter应用总结
    Swift 进阶
    swift 2.0 语法 字符串
    C++Builder中MessageBox的基本用法
  • 原文地址:https://www.cnblogs.com/Mister-JH/p/9520033.html
Copyright © 2020-2023  润新知