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()
    
    
  • 相关阅读:
    在mac下使用ppk文件ssh到远程主机
    Openstack镜像和密码
    ubuntu下如何用命令行运行deb安装包
    python中使用@property
    linux里的vi怎么移动到最后一行
    Git 怎样保证fork出来的project和原project(上游项目)同步更新
    使用msgfmt编译多语言文件
    ubuntu创建文件夹快捷方式命令
    ssh: connect to host localhost port 22: Connection refused 问题
    excel中如何批量将所有的网址设为超链接
  • 原文地址:https://www.cnblogs.com/hyc123/p/11448685.html
Copyright © 2011-2022 走看看