20210519面向对象
-
定义一个狗类和一个人类:
狗拥有属性:姓名、性别和品种 拥有方法:叫唤
人类拥有属性:姓名、年龄、狗 拥有方法:遛狗class Dog: def __init__(self, dog_name, dog_gender, dog_breed): self.dog_name = dog_name self.dog_gender = dog_gender self.dog_breed = dog_breed def __repr__(self): return f'<{str(self.__dict__)[1: -1]}>' @classmethod def bark(self): print('拥有方法:叫唤') dog1 = Dog('旺财', '公', '边牧') print(dog1) Dog.bark() class Person: def __init__(self, name, age, have_dog): self.name = name self.age = age self.have_dog = have_dog def __repr__(self): return f'<{str(self.__dict__)[1:-1]}>' @classmethod def work_dog(self): print('拥有方法:遛狗') person1 = Person('刘德华', '60', '杨坤') print(person1) Person.work_dog()
-
定义一个矩形类,拥有属性:长、宽 拥有方法:求周长、求面积
class Rectangle: def __init__(self, length, width): self.length = length self.width = width def get_perimeter(self): return (self.length + self.width)*2 def get_area(self): return self.length * self.width r1 = Rectangle(3, 5) print(f'矩形周长:{r1.get_perimeter()}') print(f'矩形面积:{r1.get_area()}')
-
定义一个二维点类,拥有属性:x坐标、y坐标 拥有方法:求当前点到另外一个点的距离
class Point: def __init__(self, x, y): self.x = x self.y = y def distance(self): result = ((self.x[0]-self.x[1])**2 + (self.y[0]-self.y[1])**2)**(1/2) return result p1 = Point((2, 5), (6, 8)) print(f'两点之间的距离:{p1.distance()}')
-
定义一个圆类,拥有属性:半径、圆心 拥有方法:求圆的周长和面积、判断当前圆和另一个圆是否外切
class Circle: def __init__(self, radius, center1): self.radius = radius self.center1 = center1 def get_primeter(self): pi = 3.1415926 return self.radius*2*pi def get_area(self): pi = 3.1415926 return pi*self.radius**2 def judge_circumcision(self, radius2, center2): distance = ((self.center1[0] - center2[0])**2 + (self.center1[1]- center2[1])**2)**(1/2) if distance == self.radius + radius2: return '两圆外切' else: return '两圆不外切' c1 = Circle(5, (4,3)) print(f'周长:{c1.get_primeter()}') print(f'面积:{c1.get_area()}') print(f'{c1.judge_circumcision(3,(8,11))}')
-
定义一个线段类,拥有属性:起点和终点, 拥有方法:获取线段的长度
class Line: def __init__(self, start, end): self.start = start self.end = end def get_len(self): return abs(self.start - self.end) l1 = Line(4,18) print(f'线段长度:{l1.get_len()}')