本文实例讲述了Python面向对象class类属性及子类用法。分享给大家供大家参考,具体如下:
class类属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
class Foo( object ): x = 1.5 foo = Foo() print foo.x #通过实例访问类属性 >>> 1.5 print Foo.x #通过类访问类属性 >>> 1.5 foo.x = 1.7 #只改新实例属性,不会改变类属性 print foo.x >>> 1.7 print Foo.x >>> 1.5 foo.x + = 0.2 ##只改新实例属性,不会改变类属性 print foo.x >>> 1.9 print Foo.x >>> 1.5 del foo.x ##删除更新的实例属性,默认变为类的属性 print foo.x >>> 1.5 print Foo.x >>> 1.5 |
class子类
父类:
1
2
3
4
5
6
7
8
9
|
class AddrBookEntry( object ): "address book entry class" def __init__( self , nm, ph): self .name = nm self .phone = ph print "created instance for:" , self .name def updatePhone( self , newph): self .phone = newph print "updated phone# for:" , self .name |
子类:
当一个类被派生出来,子类就继承了基类的属性。所以EmplAddrBookEntry继承了AddrBookEntry的updatePhone的方法。子类最好自定义自己的构造器,不然基类的构造器会被调用。如果子类重写了基类的构造器,基类的构造器就不会自动调用,除非被显示声明出来。
1
2
3
4
5
6
7
8
9
|
class EmplAddrBookEntry(AddrBookEntry): "employee address book entry class" def __init__( self , nm, ph, id , em): ##重写基类构造器 AddrBookEntry.__init__( self , nm, ph) self .empid = id self .email = em def updateEmail( self , newem): self .email = newem print "updated e-mail address for:" , self .name |
使用子类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
john = EmplAddrBookEntry( "john doe" , "408-555-1212" , 42 , "john@spam.doe" ) created instance for : john doe >>> john <__main__.EmplAddrBookEntry object at 0x02115FD0 > >>> john.name 'john doe' >>> john.phone '408-555-1212' >>> john.email 'john@spam.doe' >>> john.updatePhone( "415-555-1212" ) updated phone # for: john doe >>> john.phone '415-555-1212' >>> john.updateEmail( "john@doe.spam" ) updated e - mail address for : john doe >>> john.email 'john@doe.spam' |
希望本文所述对大家Python程序设计有所帮助。
原文链接:http://www.cnblogs.com/paulwinflo/p/4991435.html