绑定方法与非绑定方法

类中定义的方法大致可以分为两类:绑定方法和非绑定方法。其中绑定方法又可以分为
绑定到对象的方法和绑定到类的方法。
在类中正常定义的函数默认是绑定到对象的,而为某个函数加上装饰器@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)

  

 
posted @ 2019-11-28 18:48  Parado  阅读(111)  评论(0编辑  收藏  举报