绑定方法与非绑定方法,反射,内置方法
类中定义函数分为绑定方法和非绑定方法两大类
绑定方法的特殊之处就是绑定给谁就由谁来调用 谁来调用就会将谁当做第一个参数自动传入
绑定方法也分为两种:
1.绑定给对象的方法 在类中定义函数没有被任何装饰器修饰的情况下,默认就是绑定对象的
2.绑定给类的方法 为类中定义函数添加一个装饰器classmethod 就是绑定类的
非绑定方法就是一个普通函数 与类和对象都不绑定 类和对象都可以调用,但无论谁来调用都只是一个普通函数 没有自动传值效果
非绑定方法就是为类中的定义函数添加一个装饰器staticmethod
class Foo: def func1(self): print('func1',self) @classmethod def func2(cls): print('func2',cls) @staticmethod def func3(x): print('func3',x) obj =Foo() #绑定给对象的方法 obj.func1() print(obj.func1) #绑定给类的方法 Foo.func2() print(Foo.func2) #非绑定方法 Foo.func3(1) obj.func3(1)
反射是通过字符串来操作属性
class People: def __init__(self,name,age): self.name=name self.age=age def info(self): print('%s %s'%(self.name,self.age)) obj = People('xia',20) print(hasattr(obj,'name')) print(getattr(obj,'name')) setattr(obj,'name','egon') print(obj.__dict__) delattr(obj,'name') print(hasattr(obj,'name')) print(getattr(obj,'name',None))
内置方法
isinstance指判断是否是一个对象
issubclass指判断是否是一个子类
__str__是会在对象被打印时自动触发,然后将返回值返回给print功能进行打印
__del__会在对象被删除时自动触发执行 用来在对象被删除前回收系统资源