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,这样可以有效的隐藏,展示,控制__属性对用户的影响