python概念-各类绑定的概念和property的变态一面
1 # 编辑者:闫龙 2 # 1.什么是绑定到对象的方法,如何定义,如何调用,给谁用?有什么特性 3 #在类中定义的(self)方法都是绑定到对象的方法 4 #定义 5 class a: 6 def b(self):#绑定到对象的方法 7 pass 8 #调用: 9 c = a() 10 c.b()#调用a类中绑定到对象c的b(self)方法 11 #既然是绑定到对象的方法,当然是给实例化之后的对象使用了 12 #当对象调用方法时,对象会将自己当做第一个参数传递给方法 13 14 # 2.什么是绑定到类的方法,如何定义,如何调用,给谁用?有什么特性 15 #静态方法和类方法都是绑定到类的方法 16 #静态方法定义: 17 class ClassStaticFunc: 18 @staticmethod#定义一个静态方法需要调用的装饰器staticmethod 19 def StaticFunc():#被staticmethod修饰过的StaticFunc方法就是一个静态方法 20 pass 21 #调用: 22 ClassStaticFunc.StaticFunc()#无需实例化直接类名打点儿调用类中的静态方法 23 #静态方法是让类去调用的方法 24 #需实例化直接类名打点儿调用类中的静态方法,静态方法可以被实例化的对象调用,但是一般不这么使用 25 #类方法定义: 26 class ClassFunc: 27 @classmethod#定义一个类方法需要调用的装饰器classmethod 28 def ClassMethod(cls):#被classmethod修饰过的ClassMethod方法就是一个类方法 29 pass 30 #调用: 31 ClassFunc.ClassMethod()#无需实例化直接类名打点儿调用类方法 32 #类方法顾名思义是与类绑定的方法,一定是给类调用的方法 33 #当类调用类方法时,会将当前调用方法的类当做第一个参数传递到方法中 34 # 3.什么是解除绑定的函数,如何定义,如何调用,给谁用?有什么特性 35 #定义在类的内部,并且被staticmethod修饰过的方法 36 #定义: 37 class NoBandFunc: 38 @staticmethod 39 def NoBang(a,b,c): 40 pass 41 #调用: 42 nbf = NoBandFunc.NoBang(1,2,3) 43 #or: 44 nbfs = NoBandFunc() 45 nbf1 = nbfs.NoBang(1,2,3) 46 #解除绑定方法不在自动传值 47 48 # 4.什么是property,如何定义,如何使用,给谁用,什么情况下应该将一个属性定义成property,有什么好处? 49 #是一个将方法隐藏变更调用方法的方式,让用户看起来是在调用属性而不是方法,property修饰过的方法,会产生该方法的setter,del方法用来修改和删除属性 50 #定义 51 class PropertyClass: 52 def __init__(self,name): 53 self.__Name = name 54 @property 55 def PropertyFunc(self): 56 print(self.__Name) 57 @PropertyFunc.setter 58 def PropertyFunc(self,name): 59 self.__Name = name 60 print(self.__Name) 61 @PropertyFunc.deleter 62 def PropertyFunc(self): 63 del self.__Name 64 #调用: 65 pc = PropertyClass("egon") 66 pc.PropertyFunc 67 pc.PropertyFunc("egon_SomeBody") 68 del pc.PropertyFunc 69 #一般在__属性的情况下使用property,这样可以有效的隐藏,展示,控制__属性对用户的影响