-
定义一个狗类和一个人类:
狗拥有属性:姓名、性别和品种 拥有方法:叫唤
人类拥有属性:姓名、年龄、狗 拥有方法:遛狗
class Dog: """一个狗类""" def __init__(self, name, gender, breed): self.name, self.gender, self.breed = name, gender, breed def bark(self): print(f'{self.name}: 汪汪汪!!!') class Person: """人类""" def __init__(self, name, age, dog=None, gender='男'): self.name, self.age, self.dog, self.gender = name, age, dog, gender def walk_dog(self): if self.dog: print(f'{self.name}正在遛{"他" if self.gender == "男" else ("她" if self.gender == "女" else "它")}的狗{self.dog.name}') else: print(f'{self.dog}没有狗, 自己遛!') dog1 = Dog('财财', '公狗', '中华田园犬') p1 = Person('小花', 24, dog1, '女') p1.walk_dog()
-
定义一个矩形类,拥有属性:长、宽 拥有方法:求周长、求面积
class Rect: """矩形类""" def __init__(self, width=0, height=0): self.width, self.height = width, height def area(self): return self.width * self.height def perimeter(self): return 2 * (self.width + self.height) rect1 = Rect(10, 20) print(rect1.area(), rect1.perimeter())
-
定义一个二维点类,拥有属性:x坐标、y坐标 拥有方法:求当前点到另外一个点的距离
class Point: """一个二维点类""" def __init__(self, x=0, y=0): self.x, self.y = x, y def distance(self, point2): return ((self.x - point2.x) ** 2 + (self.y - point2.y) ** 2) ** 0.5 po1 = Point(-5, -3) po2 = Point(9, 6) print(po1.distance(po2))
-
定义一个圆类,拥有属性:半径、圆心 拥有方法:求圆的周长和面积、判断当前圆和另一个圆是否外切
class Circle: """一个圆类""" pi = 3.14159265358979 def __init__(self, r=0, center=Point(0, 0)): self.r, self.center = r, center def area(self): return Circle.pi * self.r ** 2 def perimeter(self): return 2 * Circle.pi * self.r def isexcircle(self, circle2): """是否外切""" return self.center.distance(circle2.center) == self.r + circle2.r c1 = Circle(2) c2 = Circle(3, Point(3, 4)) print(c1.isexcircle(c2))
-
定义一个线段类,拥有属性:起点和终点, 拥有方法:获取线段的长度
class Segment: """一个线段类""" def __init__(self, start=Point(0, 0), end=Point(0, 0)): self.start, self.end = start, end def length(self): return self.start.distance(self.end) seg1 = Segment(Point(10, 0), Point(2, 6)) print(seg1.length())
day17-面向对象作业
于 2022-05-06 17:51:39 首次发布