对象的绑定方法:是由对象来调用,会将调用的对象当作第一个参数传入python
类的绑定方法:是由类来调用,会将调用的类当作第一个参数传入算法
是一个python内置的装饰器,在类内部定义方法时进行装饰,将类内部的方法变为“类的绑定办法”函数
class Foo: __date = '天王盖地虎,Mr沈真牛批' def __init__(self,name,age): self.name = name self.age = age @classmethod def check_date(cls,name,pwd): # 经过classmethod装饰器,self变为cls obj = cls(name,pwd) if name == 'shen' and pwd == 123: print(cls.__date) else: print('权限不足') Foo.check_date('shen',123) # 天王盖地虎,Mr沈真牛批 Foo.check_date('tate',123) # 权限不足
是python内置的装饰器,在类的内部定义方法时使用,将类内部的方法变为“非绑定方法”ui
非绑定方法:能够由对象或类来调用,谁来调用都是普通的方法(普通函数),方法须要几个参数就要传几个参数,不会将自身传入code
# uuid用于产生随机字符串的模块,由时间戳以及某种算法组合而成,会产生一串世界上独一无二字符串 import uuid class Foo: date = uuid.uuid4() @staticmethod def get_date(): print('天王盖地虎,Mr沈真牛批') @staticmethod def info(name,age,sex): print(f'姓名: {name}, 年龄: {age}, 性别: {sex}, id: {Foo.date}') # 由对象调用 obj = Foo() obj.get_date() # 天王盖地虎,Mr沈真牛批 obj.info('shen',18,'male') # 姓名: shen, 年龄: 18, 性别: male, id: 08ef31e6-ccdf-4e14-8db4-a390c3787acf # 由类来调用 Foo.get_date() # 天王盖地虎,Mr沈真牛批 Foo.info('shen',18,'male') # 姓名: shen, 年龄: 18, 性别: male, id: 08ef31e6-ccdf-4e14-8db4-a390c3787acf
isinstance:判断一个对象是不是一个类的实例,若是是返回True,若是不是返回False对象
issubclass:判断一个类是不是另外一个类的子类,若是是返回True,若是不是返回False字符串
class Foo: def __init__(self): pass class Goo: def __init__(self): pass foo_obj = Foo() goo_obj = Goo() print(isinstance(foo_obj, Foo)) # True print(isinstance(goo_obj, Foo)) # False
class Foo: def __init__(self): pass class Sun(Foo): def __init__(self): pass class Goo: def __init__(self): pass print(issubclass(Sun,Foo)) # True print(issubclass(Goo,Foo)) # False