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

    类的绑定方法

    一:绑定方法(绑定给谁,就应该由谁来调用,谁来调用就回把调用者当作第一个参数自动传入):

    • 绑定给对象的方法:在类内定义的没有被任何装饰器修饰的
      为对象量身定制
    
        对象.boud_method(),自动将对象当作第一个参数传入
    
      (属于类的函数,类可以调用,但是必须按照函数的规则来,没有自动传值那么一说)
    • 绑定给类的方法:在类内定义的被装饰器classmethod修饰的方法
    #settings.py
    HOST='127.0.0.1'
    PORT=3306
    DB_PATH=r'C:UsersAdministratorPycharmProjects	est面向对象编程	est1db'
    
    #test.py
    import settings
    class MySQL:
        def __init__(self,host,port):
            self.host=host
            self.port=port
    
        @classmethod
        def from_conf(cls):
            print(cls)
            return cls(settings.HOST,settings.PORT)
    
    print(MySQL.from_conf) #<bound method MySQL.from_conf of <class '__main__.MySQL'>>
    conn=MySQL.from_conf()
    
    conn.from_conf() #对象也可以调用,但是默认传的第一个参数仍然是类

    二、非绑定方法:没有自动传值这么一说了,就类中定义的一个普通工具,对象和类都可以使用

    • 非绑定方法:不与类或者对象绑定,用staticmethod装饰器装饰的方法
    import hashlib
    import time
    class MySQL:
        def __init__(self,host,port):
            self.id=self.create_id()
            self.host=host
            self.port=port
        @staticmethod
        def create_id(): #就是一个普通工具
            m=hashlib.md5(str(time.time()).encode('utf-8'))
            return m.hexdigest()
    
    print(MySQL.create_id) #<function MySQL.create_id at 0x0000000001E6B9D8> #查看结果为普通函数
    conn=MySQL('127.0.0.1',3306)
    print(conn.create_id) #<function MySQL.create_id at 0x00000000026FB9D8> #查看结果为普通函数

    <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

  • 相关阅读:
    字节序列高低端问题
    简单的进制转换
    网页中如何调用WIN本地程序
    获取CAN报文并解析
    异步通信服务选型
    PostgreSQL 更新JSON,JSONB字段
    js,Date的toJSON方法时间和当地时间不一致如何处理
    js中字符串的替换 replace方法
    百度富文本编辑器umeditor,ueditor字体修改无效的问题
    python 3 基础之类和对象的创建、面向对象的三大特性
  • 原文地址:https://www.cnblogs.com/yjiu1990/p/9144516.html
Copyright © 2011-2022 走看看