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