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

    类中定义的方法大致可以分为两类:绑定方法和非绑定方法。其中绑定方法又可以分为
    绑定到对象的方法和绑定到类的方法。
    在类中正常定义的函数默认是绑定到对象的,而为某个函数加上装饰器@classmethod后,该函数就绑定到了类。
    绑定的方法
    类中使用 @classmethod 修饰的方法就是绑定到类的方法。这类方法专门为类定制。通过类名调用绑定到类的方法时,
    会将类本身当做参数传给类方法的第一个参数。
    # classmethod_Demo:
    class DB:
        __data = 'tank is very handsome!!!'
    
        def __init__(self, user, pwd, role):
            self.user = user
            self.pwd = pwd
            self.role = role
    
        # @classmethod
        # def init(cls, user, pwd, role):  # cls --》指的是类
        #     # 在类方法内部调用类产生一个实例 ---》 对象
        #     return cls(user, pwd, role)
    
        # 查看数据方法
        @classmethod
        def check_db(cls, user, pwd, role):  # cls --》指的是类
    
            # 在类方法内部调用类产生一个实例 ---》 对象
            obj = cls(user, pwd, role)
    
            # 1.查看数据前,必须要通过校验
            if obj.user == 'tank' and obj.pwd == '123' and obj.role == 'admin':
                print('检验通过..')
                print(cls.__data)
                return cls.__data
    
    
    DB.check_db('tank', '123', 'admin')
    
    
    

    非绑定方法

    在类内部使用 @staticmethod 修饰的方法即为非绑定方法,这类方法和普通定义的函数没有区别,不与类或对象绑定,谁都可以调用,且没有自动传值的效果。

    
    
    # staticmethod_Demo:
    import uuid  # 用于产生随机字符串的模块
    
    # 由时间戳以及某种算法组合而成,会产生一串世界上独一无二字符串。
    # print(uuid.uuid4())
    
    
    class Foo:
        @staticmethod
        def func(res):
            print(res)
    
    
    obj = Foo()
    
    
    # 对象调用非绑定方法
    obj.func(123)
    
    # 类调用非绑定方法
    Foo.func(1234)
    
    
    

      

     
  • 相关阅读:
    Django form
    centos 配置yum 源
    VMware clone centos 没有获取到ip
    python 自定义分页
    模态对话框
    Keepalived HAProxy mysql 配置HA
    HAProxy + mysql 配置
    mysql 配置主从
    关于python很好的网站和书籍
    【文件系统】dumpe2fs命令
  • 原文地址:https://www.cnblogs.com/lvguchujiu/p/11952888.html
Copyright © 2011-2022 走看看