本文實例講述了Python面向對象之繼承和組合用法。分享給大家供大家參考,具體如下:
面向對象的組合用法
軟件重用的重要方式除了繼承之外還有另外一種方式,即:組合
組合指的是,在一個類中以另外一個類的對象作為數據屬性,稱為類的組合
圓環是由兩個圓組成的,圓環的面積是外面圓的面積減去內部圓的面積。圓環的周長是內部圓的周長加上外部圓的周長。
這個時候,我們就首先實現一個圓形類,計算一個圓的周長和面積。然后在"環形類"中組合圓形的實例作為自己的屬性來用
# -*-coding:utf-8 -*-#! python3from math import piclass Circle: ''' 定義了一個圓形類; 提供計算面積(area)和周長(perimeter)的方法 ''' def __init__(self,radius): self.radius = radius def area(self): return pi * self.radius * self.radius def perimeter(self): return 2 * pi *self.radiuscircle = Circle(10) #實例化一個圓area1 = circle.area() #計算圓面積per1 = circle.perimeter() #計算圓周長print(area1,per1) #打印圓面積和周長class Ring: ''' 定義了一個圓環類 提供圓環的面積和周長的方法 ''' def __init__(self,radius_outside,radius_inside): self.outsid_circle = Circle(radius_outside) self.inside_circle = Circle(radius_inside) def area(self): return self.outsid_circle.area() - self.inside_circle.area() def perimeter(self): return self.outsid_circle.perimeter() + self.inside_circle.perimeter()ring = Ring(10,5) #實例化一個環形print(ring.perimeter()) #計算環形的周長print(ring.area()) #計算環形的面積
運行結果:
314.1592653589793 62.83185307179586
94.24777960769379
235.61944901923448
繼承
繼承是一種創建新類的方式,在python中,新建的類可以繼承一個或多個父類,父類又可稱為基類或超類,新建的類稱為派生類或子類
python中類的繼承分為:單繼承和多繼承
查看繼承
>>> SubClass1.__bases__ #__base__只查看從左到右繼承的第一個子類,__bases__則是查看所有繼承的父類(<class '__main__.ParentClass1'>,)>>> SubClass2.__bases__(<class '__main__.ParentClass1'>, <class '__main__.ParentClass2'>)
提示:如果沒有指定基類,python的類會默認繼承object類,object是所有python類的基類,它提供了一些常見方法(如__str__
)的實現。
>>> ParentClass1.__bases__(<class 'object'>,)>>> ParentClass2.__bases__(<class 'object'>,)
繼承與抽象(先抽象再繼承)
抽象即抽取類似或者說比較像的部分。
抽象分成兩個層次:
1.將奧巴馬和梅西這倆對象比較像的部分抽取成類;
新聞熱點
疑難解答