class Shape:
def area(self):
pass
def perimeter(self):
pass
class Rectangle(Shape):
width=0
__high=0
def __init__(self,width,high):
self.width=width
self.__high=high
def set_high(self,high):
self.__high=high
def area(self):
return self.width * self.__high
def perimeter(self):
return (self.width + self.__high) * 2
class Square(Rectangle):
length=0
def __init__(self,length):
self.length=length
self.set_high(length)
def area(self):
return self.length**2
def perimeter(self):
return self.length*4
class Circle(Shape):
r=0
def __init__(self,r):
self.r=r
def area(self):
return self.r**2*3.14
def perimeter(self):
return 2*3.14*self.r
class Annulus(Circle):
inner_r=0
def __init__(self,r,inner_r):
self.r=r
self.inner_r=inner_r
def area(self):
return super().area()-self.inner_r*3.14
def perimeter(self):
return super().perimeter()+self.inner_r*3.14
rect=Rectangle(20,20)
print(rect.area())
rect.set_high(10)
print(rect.area())
squre=Square(30)
print(squre.area())
circle=Circle(2)
print(circle.area())
annulus=Annulus(20,10)
print(annulus.area())
print(annulus.perimeter())
class A:
def area(self):
return ' 你调错了 '
def computer_area(shape):
if isinstance(shape,Shape):
print(shape.area())
else:
print('外汇跟单gendan5.com 不属于二维图形 ')
print(shape.area())
computer_area(squre)
computer_area(annulus)
computer_area(circle)
a=A()
computer_area(a)
print(isinstance(squre,Rectangle))# 判断正方形是否是长方形的实例