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

    绑定方法

    分为对象绑定方法和类的绑定方法

    绑定方法的特殊之处

    绑定给谁就是谁来调用

    类的绑定方法

    绑定给类,类来调用,会把类自身传过来

    不需要通过对象 ,只需要通过类就能获取到一些东西的时候,用类的绑定方法

    当然,类的绑定方法也可以由对象来调用

    class Person:
        def __init__(self,name,age):
            print(self)
            self.name=name
            self.age=age
        # @classmethod
        # def test(cls):
        #     print(cls)
        #     print('类的绑定方法')
        #     #类实例化产生对象,返回
        #     return cls('lqz',19)
        @classmethod
        def get_obj_by_name(cls,name):
            #1 去文件中查找名字为 name 的pickle文件
            #2 反序列化成对象
            #3 return 对象
            pass
        def get_obj_by_name(self,name):
            # 1 去文件中查找名字为 name 的pickle文件
            # 2 反序列化成对象
            # 3 return 对象
            pass
            
            
    per1=Person.test()
    
    per2=Person('nick',18)
    
    
    admin=Person.get_obj_by_name('lqz')
    admin.create()
    

    类的绑定方法可以由对象来调

    class Person:
        '''
        注释的内容
    
        '''
        def __init__(self,name,age):
            # print(self)
            self.name=name
            self.age=age
        @classmethod
        def test(cls):
            print(cls)
            print('类的绑定方法')
    
    # Person.test()
    p=Person('nick',18)
    #对象可以调用类的绑定方法,也是把该对象的类传入
    p.test()
    

    总结:
    -classmethod 是个装饰器,放在类中函数的上面,该函数就变成了类的绑定方法
    -类的绑定方法由类来调用,自动把类传过去(对象也可以调,一般不用)
    -类的绑定方法用在什么地方?
    -不需要通过对象,只需要通过类就能完成某些事的时候,就把该方法定义为类的绑定方法

    非绑定方法

    定义在类内部的普通方法,谁都不绑定

    对象/类都可以调用,但是不会自动传值

    class Person:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
        def object_method(self):
            print('我是对象绑定方法,对象来调用我')
    
        @classmethod
        def class_method(cls):
            print('我是类的绑定方法,类来调用我')
    
        #当成一个普通函数,只不过是写在类内部的
        @staticmethod
        def static_method():
            print('我是静态方法,谁都不绑定')
    #静态方法(非绑定方法)
    #类来调用
    Person.static_method()
    # 对象来调用
    p=Person('nick',19)
    p.static_method()
    
    
  • 相关阅读:
    Spark SQL 初步
    Android开展:ADT+Eclipse使用错误:Text editor does not have a document provider
    android 98 MediaPlayer+SurfaceView播放视频
    android97 播放音频 有进度条控制
    android96 内存创建图片副本,画画板
    Android记录6--ViewPage+Fragment的使用例子
    android95 缩放加载大图片
    android94 样式和主题
    android93 进程优先级补充
    android92 aidl远程进程通信
  • 原文地址:https://www.cnblogs.com/hyc123/p/11448685.html
Copyright © 2011-2022 走看看