python—类的属性和方法总结

一、类的属性总结(类的属性定义在方法外,对象的属性定义在方法内)

理解:

类的(静态)属性:(人类的五官,理解为变量)

类的(动态)方法:(人类吃穿住行,理解为一个函数,至少带一个参数self,指向类本身)

对象:类的实例化,之后才能有属性和方法


1)类的属性,也是公有属性;类的私有属性

2)对象的公有属性;对象的私有属性

3)函数局部变量;全局变量

4)内置属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/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)内置方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#/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









本文转自 huangzp168 51CTO博客,原文链接:http://blog.51cto.com/huangzp/2047973,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值