VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • python基础 python类的成员和装饰器(4)

@classmethod和@staticmethod分别代替了之前的类方法和静态方法的声明方式,除了简洁外没有其它特殊的意义。

在2中定义的类中,有一个私有实例变量,它不能被类和实例所访问,我们通过增加@property和@setter来使实例能够对私有变量进行访问和赋值,并可以通过@deleter来将该变量删除。注意,类也能通过@property进行私有变量的访问,但无法通过@setter来给私有变量赋值,且@deleter不支持类访问。

调用如下:

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
47
48
49
50
51
print '-------------------MyClass.func()------------------'
MyClass.func()
 
 
x= MyClass()
print '-------------------x.func()------------------'
x.func()
print '-------------------x.func2()------------------'
x.func2()
print '-------------------x.func3()------------------'
x.func3()
 
print ''
print 'MyClass().val3 : ',MyClass().val3       #类调用property
MyClass().val3= 'New Value'            #类调用setter
print 'after "MyClass().val3 = New Value" val3 :', MyClass().val3
 
print''
print 'val3 : ',x.val3               #实例调用property
x.val3= 'New Value'                #实例调用setter
print 'after "x.val3 = New Value" val3 :', x.val3
del x.val3                   #实例调用deleter
print 'after "del x.val3"  val3 : ', x.val3
#结果
-------------------MyClass.func()------------------
val1 :  Value1
static cannot access val2
static method cannot access __val3
val4 : 1
-------------------x.func()------------------
val1 :  Value1
static cannot access val2
static method cannot access __val3
val4 : 2
-------------------x.func2()------------------
val1 :  Value1
class method cannot access val2
class method cannot access __val3
val4 : 3
-------------------x.func3()------------------
val1 :  Value1
val2 :  Value2
instance method cannot access __val3
val4 : 4
 
MyClass().val3 :  Value3                #类调用property
after"MyClass().val3 = New Value" val3 : Value3    #类调用setter没有生效
 
val3 :  Value3                    #实例调用property
after"x.val3 = New Value" val3 : New Value   #实例调用setter
after"del x.val3"  val3 :  Value3        #实例调用deleter

相关教程