编程语言
首页 > 编程语言> > Python:定义一个形状基类,并在其下定义子类,计算面积和周长

Python:定义一个形状基类,并在其下定义子类,计算面积和周长

作者:互联网

编写代码,定义一个形状基类,有 2 个属性:面积和周长,以及两个无返回值的方法:area()和 perimeter(),分别计算形状的面积和周长,从基类派生出三个子类:三角形、矩形、圆,重载基类的两个方法。

class Shape:
    def __init__(self,areas = 0,perimeters = 0):
        self.areas = areas
        self.perimeters = perimeters
        #给shape赋予面积和周长变量

    def area():
        pass
   		 #定义area函数,不进行操作

    def perimeter():
        pass
		#定义周长函数,不进行操作
    
class Triangle(Shape):
    def __init__(self, a_side = 0, b_side = 0, c_side = 0,areas = 0, perimeters = 0):
        super().__init__(areas, perimeters)
        self.a_side = a_side
        self.b_side = b_side
        self.c_side = c_side
		#定义子类三角形,赋予都有属性三边长,同时给予默认值0防止报错
        
    def area(self):
        s = (self.a_side + self.b_side + self.c_side) / 2
        self.areas = (s * (s-self.a_side) * (s-self.b_side) * (s-self.c_side))**0.5
        #求三角形的面积
        
    def perimeter(self):
         self.perimeters = self.a_side + self.b_side + self.c_side
         #求周长

class Circle(Shape):
    def __init__(self, radius = 0, areas = 0, perimeters = 0):
        super().__init__(areas, perimeters)
        self.radius = radius
        #定义子类圆,同时赋予独有属性半径,给予其默认值

    def area(self):
        self.areas = (3.14 * (self.radius**2)) / 2

    def perimeter(self):
        self.perimeters = 2 * 3.14 * self.radius
   		 #分别求面积周长并付给对应值
        
class Rectangle(Shape):
    def __init__(self, length = 0, wideth = 0, areas = 0, perimeters = 0):
        super().__init__(areas, perimeters)
        self.length = length
        self.wideth = wideth
        #定义子类矩形,独有属性长和宽,默认值均为零

    def area(self):
        self.areas = self.length * self.wideth

    def perimeter(self):
        self.perimeters = 2 * (self.length + self.wideth)
        #分别求面积和周长


    def area(self):
        self.areas = (3.14 * (self.radius**2)) / 2

    def perimeter(self):
        self.perimeters = 2 * 3.14 * self.radius
   		 #分别求面积周长并付给对应值
        
class Rectangle(Shape):
    def __init__(self, length = 0, wideth = 0, areas = 0, perimeters = 0):
        super().__init__(areas, perimeters)
        self.length = length
        self.wideth = wideth
        #定义子类矩形,独有属性长和宽,默认值均为零

    def area(self):
        self.areas = self.length * self.wideth

    def perimeter(self):
        self.perimeters = 2 * (self.length + self.wideth)
        #分别求面积和周长


#测试
        
a1 = Triangle(3,4,5)
a1.area()
a1.perimeter()
print(a1.areas)
print(a1.perimeters)
#三角形(3,4,5)符合要求且正确

a2 = Circle(5)
a2.area()
a2.perimeter()
print(a2.areas)
print(a2.perimeters)
#矩形(3,4)符合要求且正确

a3 = Rectangle(5)
a3.area()
a3.perimeter()
print(a3.areas)
print(a3.perimeters)
#圆(5)符合要求且正确

标签:__,perimeters,Python,子类,self,基类,side,def,areas
来源: https://blog.csdn.net/qq_53709900/article/details/117392454