类与对象之组合

# 第二大题:基于圆形类实现一个圆环类,要求接收参数 外圆半径和内圆半径

# 完成方法 :计算环形面积和环形周长(公式自己上网查)#Radius半径    Acreage面积 

# 要求,借助组合,要求组合圆形类的对象完成需求 Circular Ring圆环 perimeter周长

from math import pi

class Circle:

    def __init__(self,r):

        self.r=r

    def area(self):

        return pi*self.r*self.r  #必须要有返回值,方便在函数内部计算。

    def perimeter(self):

        return 2*pi*self.r       #必须要有返回值,方便在函数内部计算。

class Ring:

    def __init__(self,out_r,inner_r):

        out_r,inner_r=(out_r,inner_r) if out_r>inner_r else (inner_r,out_r) #这段代码可解决传递的半径#大小的顺序问题。

        self.out_c=Circle(out_r)  #内部完成实例化,用户体验更好。

        self.inner_c=Circle(inner_r)

    def computes(self):     #设计了一个计算方法,专门用于计算圆环的面积及周长,打印并返回值。

        'return 圆环的面积,圆环的周长'

        ringarea=self.out_c.area()-self.inner_c.area() #完成内部调用

        print('圆环的面积是:',ringarea)

        ringperimeter=self.out_c.perimeter()+self.inner_c.perimeter()

        print('圆环的周长是:',ringperimeter)

        return ringarea,ringperimeter

    #def area(self):       #另一种方式,没有用计算函数,而是分别用了面积和周长的方法。

        #return self.out_c.area()-self.inner_c.area()

    #def perimeter(self):  #另一种方式,没有用计算函数,而是分别用了面积和周长的方法。

       #return self.out_c.perimeter()+self.inner_c.perimeter()

ring=Ring(10,15)   #当一段代码中同样的公式、方法要在多处用时,最好用组合,公式只写#一处,其它的都是引用。可减少代码量,代码有错时,只需修改一处就可以了。

ring.computes()  

原文地址:https://www.cnblogs.com/qqq789001/p/13386121.html