利用面向对象的知识,通过封装、继承、多态设计一个求圆、长方形的周长、面积的程序怎么弄

1.1.      定义一个基类Pm,有求平面图形周长、面积的2个方法。(10分)

1.2.      定义一个Pm的子类Cfx,有构造方法,私有属性为长、宽,有分别设置长、宽的set方法,有返回长、宽的get方法。重写父类的求周长、面积的方法。(10分)

1.3.      定义一个Pm的子类Yuan,有构造方法,私有属性为半径,有设置半径的set方法,有返回半径的get方法。重写父类的求周长、面积的方法。(10分)

1.4.      定义一普通函数,利用多态实现2个子类求周长、面积的方法。(10分)

1.5.      用户输入长方形的长、宽。输入圆的半径。把输入的数据实例化长方形、圆的类,然后显示它们的周长、面积。(10分)

import math

class Pm:
    def perimeter(self):
        pass
    def area(self):
        pass

class Cfx(Pm):
    def __init__(self,l,w):
        self.set(l,w)
    def set(self,l,w):
        self.__long = l
        self.__wide = w
    def get(self):
        return self.__long,self.__wide
    def perimeter(self):
        return (self.__long + self.__wide)*2
    def area(self):
        return self.__long * self.__wide

class Yuan(Pm):
    def __init__(self,r):
        self.set(r)
    def set(self,r):
        self.__radius = r
    def get(self):
        return self.__radius
    def perimeter(self):
        return 2*math.pi * self.__radius
    def area(self):
        return math.pi * self.__radius**2

def getClass(a,b=None):
    if b==None:
        return Yuan(a)
    else:
        return Cfx(a,b)


l = int(input('输入长方形的长:'))
w = int(input('输入长方形的宽:'))
p = getClass(l,w)
print("长方形的周长:",p.perimeter())
print("长方形的面积:",p.area())
r = int(input('输入圆的半径:'))
p = getClass(r)
print("圆的周长:",p.perimeter())
print("圆的面积:",p.area())