zoukankan      html  css  js  c++  java
  • 绑定方法与非绑定方法

    绑定方法与非绑定方法:

    #一绑定方法:@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,即为非绑定方法,谁都没有绑定,谁都可以调用,就一普通函数,所以谁用谁传值

  • 相关阅读:
    数组定义和使用
    跳转语句—break,continue,goto
    案例 天线抬不起头来
    int是几位;short是几位;long是几位 负数怎么表示
    Python3的类注意事项
    用usb线配置直流电机驱动器不能配置成功
    案例 电源灯亮,但是就是不闪灯,而且也下载不了程序
    关于ai算法的一个点子
    进程 并发 线程 032
    ftp功能深度剖析 + 线程 031
  • 原文地址:https://www.cnblogs.com/sunny7/p/9715835.html
Copyright © 2011-2022 走看看