上面就是先定义了一个类A,然后由定义了一个类B,B继承了类A,这样B就有了A的非私有属性和方法。
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
52
53
54
55
56
57
58
59
60
61
62
63
64
|
class Washer: company = 'ZBL' def __init__( self ,water = 10 ,scour = 2 ): self ._water = water #不想让用户直接访问实例变量,可以标志成私有 self .scour = scour self .year = 2000 #这是生产日期 #属性包装,将water属性包装成方法,用户使用water时实际是访问的方法 @staticmethod #定义一个静态方法 def spins_ml(spins): return spins * 0.4 print ( 'company:' ,Washer.company) #print('year:',self.year)#错误,静态方法不能使用实例属性 @classmethod def get_washer( cls ,water,scour): #cls相当于实例方法中的self,调用是不用提供这个参数 return cls (water, cls .spins_ml(scour)) #cls代表类名Washer,故不是硬编码(改类名是不用改cls,若cls用类名代替也对,但若改类名这个地方也需要改动) @property def water1( self ): #如果用户使用 实例.water相当于访问这个方法,而不是真的访问属性 return self ._water @water1 .setter def water1( self ,water): if 0 <water< = 500 : self ._water = water else : print ( 'set Failure!' ) @property def total_year( self ): return 2017 - self .year def set_water( self ,water): self .water = water def set_scour( self ,scour): self .scour = scour def add_water( self ): print ( 'Add water:' , self ._water) def add_scour( self ): print ( 'Add scour:' , self .scour) def start_wash( self ): self .add_water() self .add_scour() print ( 'Start wash...' ) class WasherDry(Washer): # 建立一个新类,继承自Washer def dry( self ): #新类中可以定义只属于子类的新方法 print ( 'Dry cloths...' ) def start_wash( self ): #在子类中新定义与父类同名的方法就是方法的重载 self .add_scour() self .add_water() if __name__ = = '__main__' : ## print(Washer.spins_ml (8)) ## w=Washer() ## print(w.spins_ml(8)) ## w=Washer(200,Washer.spins_ml(8)) ## w.start_wash() w = WasherDry() w.start_wash() print (w.scour,w.company) w.dry() |
以上这篇python面向对象_详谈类的继承与方法的重载就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。