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

    1、绑定方法

    特性:绑定给谁就应该由谁来调用,谁来调用就会将谁当作第一个参数自动传入
    《《《精髓在于自动传值》》》

    绑定方法分为两类:
    1.1 绑定给对象方法
    在类内部定义的函数(没有被任何装饰器修饰的),默认就是绑定给对象用的
    1.2 绑定给类的方法:
    在类内部定义的函数如果被装饰器@classmethod装饰,
    那么则是绑定给类的,应该由类来调用,类来调用就自动将类当作第一个参数自动传入

    2、非绑定方法

    类中定义的函数如果被装饰器@staticmethod装饰,那么该函数就变成非绑定方法
    既不与类绑定,又不与对象绑定,意味着类与对象都可以来调用
    但是无论谁来调用,都没有任何自动传值的效果,就是一个普通函数

    3、应用

    如果函数体代码需要用外部传入的类,则应该将该函数定义成绑定给类的方法
    如果函数体代码需要用外部传入的对象,则应该将该函数定义成绑定给对象的方法
    如果函数体代码既不需要外部传入的类也不需要外部传入的对象,则应该将该函数定义成非绑定方法/普通函数

    IP='192.168.1.1'
    
    PORT=3305
    settings
    import settings
    import uuid
    
    class Mysql:
        def __init__(self,ip,port):
            self.uid=self.create_uid()
            self.ip=ip
            self.port=port
    
        def tell_info(self):
            print('%s:%s' %(self.ip,self.port))
    
        @classmethod
        def from_conf(cls):
            return cls(settings.IP, settings.PORT)
    
        @staticmethod
        def func(x,y):
            print('不与任何人绑定')
    
        @staticmethod
        def create_uid():
            return uuid.uuid1()
    
    # 默认的实例化方式:类名(..)
    obj=Mysql('10.10.0.9',3307)
    
    # 一种新的实例化方式:从配置文件中读取配置完成实例化
    # obj1=Mysql.from_conf()
    # obj1.tell_info()
    
    # obj.func(1,2)
    # Mysql.func(3,4)
    # print(obj.func)
    # print(Mysql.func)
    
    print(obj.uid)
  • 相关阅读:
    最好用的html复制插件——Clipboard.js
    最好用的轮播插件——Swiper.js
    媒体查询
    函数防抖和节流
    JQ增删改查localStorage实现搜索历史功能
    vscode如何设置html模板
    js中innerHTML、outerHTML、innerText、outerText的区别
    JS实现一个简单的网页钟表
    Sql Server 2014完全卸载
    照片尺寸大小怎样换算?
  • 原文地址:https://www.cnblogs.com/chillwave/p/9239726.html
Copyright © 2011-2022 走看看