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()
    
    
  • 相关阅读:
    JAVA基础知识-java文化基础和运行环境
    一个获得jdbc方式Connection的静态方法
    Hibernate学习笔记(二)
    JVM学习笔记
    chrome常用插件
    面向站长和网站管理员的Web缓存加速指南
    OFBiz进阶之环境搭建(eclipse)
    OFBiz之SVN下载地址
    OFBiz进阶之HelloWorld(一)创建热部署模块
    Sublime Text 3插件之SublimeTmpl:新建文件的模版插件
  • 原文地址:https://www.cnblogs.com/hyc123/p/11448685.html
Copyright © 2011-2022 走看看