• 绑定方法与非绑定方法


    绑定方法与非绑定方法:

    #一绑定方法:@classmethod
    # 绑定给类用,默认传的第一个参数是类,其实对象也可调用,但仍将类当作第一个参数传入
    # 绑定到类的参数方法,类中的函数,加装饰器的是绑定给类使用的
    class Foo:
        def __init__(self,name):
            self.name = name
    
        def tell_info(self):
            print('名字是%s' % self.name)
    
        @classmethod    #加这个之后就绑定到类,意味着类可以直接调用.
        def func(cls): #
            print(cls,' 打印可以看出是绑定到类的') #加上@classmethod作用只是用于被他装饰的函数
    
    f  = Foo('egon')
    Foo.func() #<class '__main__.Foo'>  打印可以看出是绑定到类的
    # Foo.tell_info()  #你看tell_info函数没有加装饰器,没有绑定到类,不能直接通过类名去访问
    f.tell_info() #要通过对象去访问,实例化后的对象访问
    

    二 非绑定方法@staticmethod装饰的方法,不管谁来调用,都没有自动传值一说

    class Foo1:
        def __init__(self,name):
            self.name = name
    
        def tell_info(self):
            print('名字是%s' % self.name)
    
        @staticmethod #非绑定,谁都不绑定,谁都可以用,谁用谁传值,相当于是普通函数
        def func1(x,y): #作用于这一个函数,如果想作用于其他函数,就在其他函数的上面加装饰器
            print(x + y)
    
    f  = Foo1('egon')
    
    Foo1.func1(1,2)# 类来调用,需要传参数进去
    f.func1(1,3)# 对象来调用,需要穿参数
    

    在类内部创建的方法(函数)默认是绑定到对象的,绑定到对象,所以对象可以直接调用

    在类内部函数加装饰器的@classmethod,就指定为绑定到类的,所以类可以直接调用.

    在类内部函数加装饰器@staticmethod,即为非绑定方法,谁都没有绑定,谁都可以调用,就一普通函数,所以谁用谁传值

  • 相关阅读:
    运算符
    转载:C/C++源代码到可执行程序的过程详解
    #define与运算精度问题探究
    字符数组char
    解决蓝屏代吗0x0000007B的几种常见办法
    转载~vim配置文件
    Ubuntu kill命令用法详解
    How To Ask Questions The Smart Way
    提问的智慧
    【NOIP2012提高组】国王游戏 贪心 + 高精度
  • 原文地址:https://www.cnblogs.com/sunny7/p/9715835.html
Copyright © 2020-2023  润新知