发布时间:2019-09-17 07:48:50编辑:auto阅读(1560)
一、类的属性总结(类的属性定义在方法外,对象的属性定义在方法内)
理解:
类的(静态)属性:(人类的五官,理解为变量)
类的(动态)方法:(人类吃穿住行,理解为一个函数,至少带一个参数self,指向类本身)
对象:类的实例化,之后才能有属性和方法
1)类的属性,也是公有属性;类的私有属性
2)对象的公有属性;对象的私有属性
3)函数局部变量;全局变量
4)内置属性
#!/usr/bin/env python #encoding:utf-8 var6 = "全局变量var6" class Myclass(object): var1 = "类的公有属性var1" __var2 = "类的私有属性_var2" def fun1(self): self.var3 = "方法的公有属性var3" self.__var4 = "方法的私有属性_var4" var5 = "函数的局部变量var5" print var5 print var6 def fun2(self): print self.var1 print self.__var2 def fun3(self): print self.var3 print self.__var4 mc = Myclass() print mc.var1 # 外部调用类的公有属性 print mc._Myclass__var2 # 外部调用类的私有属性,一般测试用 print Myclass.var1 # 通过类名调用类的公有属性 #print Myclass.__var2 # 不能通过类名调用类的私有属性 #print Myclass.var3 # 不能通过类名调用内部函数的公有属性和私有属性 #print Myclass.__var4 mc.fun1() print mc.var3 # 外部调用方法(可以看成是带self的内部函数)的公有属性,前提是先实例化类并执行该方法 #print mc.__var4 # 外部不能调用方法的私有属性 mc = Myclass() mc.fun2() # 内部调用类的公有、私有属性 mc = Myclass() mc.fun1() mc.fun3() # 内部函数可调用其他内部函数的公有、私有属性,前提是先实例化类并执行该方法 mc = Myclass() print Myclass.__dict__ # 内置属性调用
二、类的方法总结
1)公有方法,私有方法
2)类方法(动态):classmethod()函数处理,没有被调用的类中其余参数不会加载进内存中
3)静态方法:函数不带self参数,使用staticmethod()函数处理(如果不处理,缺少self,调用时会报错),加载关于这个类的所有东西
4)内置方法
#/usr/bin/env python #encoding:utf-8 class Myclass(object): name = "Test" def __init__(self): self.fun1() self.__fun2() self.classFun() self.staticFun() print("我是内置函数或构造函数,实例化时自动执行") def fun1(self): print self.name, print ("我是公有方法") self.__fun2() def __fun2(self): print self.name, print ("我是私有方法") @classmethod def classFun(self): print self.name, print ("我是类方法或动态方法") @staticmethod def staticFun(): print Myclass.name, print ("我是静态方法") mc = Myclass() mc.fun1() # 外部调用公有方法 #mc.__fun2() # 外部不能直接调用私有方法,可以通过内部函数间相互调用 Myclass.classFun() # 类方法(动态)如果要通过类名来调用,需加装饰器classmethod() Myclass.staticFun() # 静态方法如需要类名来调用,需加装饰器staticmethod(),此时函数不再使用self
上一篇: 深入理解 Python yield
下一篇: Python资源汇集网站推荐:aweso
47840
46389
37280
34731
29312
25971
24909
19950
19542
18030
5791°
6411°
5926°
5961°
7063°
5911°
5942°
6437°
6404°
7777°