day17-面向对象作业

  1. 定义一个狗类和一个人类:

    狗拥有属性:姓名、性别和品种 拥有方法:叫唤

    人类拥有属性:姓名、年龄、狗 拥有方法:遛狗

    “”"

    class Dog:
        def __init__(self, name, gender='公', breed='田园犬'):
            self.name = name
            self.gender=gender
            self.breed = breed
    
        def bark(self):
            print(f'{self.name}汪汪汪')
    
        def __repr__(self):
            return str(self.__dict__)
    
    dog1 = Dog('多多')  #多多汪汪汪
    dog1.bark()
    
    class Person:
        def __init__(self, name, age, dog):
            self.name= name
            self.age= age
            self.dog = dog
    
        def walk_the_dog(self):
            print(f'{self.name}在遛{self.dog.name}')
    
        def  __repr__(self):
            return str(self.__dict__)
    
    
    p1 = Person('小明', 18, dog1)  # self.dog属性的属性值变成了{'name': '多多', 'gender': '公', 'breed': '田园犬'},dog1本身就是一个对象,因此可以继续调用其对象属性
    p1.walk_the_dog()  #小明在遛多多
    print(p1,type(p1))  # {'name': '小明', 'age': 18, 'dog': {'name': '多多', 'gender': '公', 'breed': '田园犬'}} 
    

    “”"

  2. 定义一个矩形类,拥有属性:长、宽 拥有方法:求周长、求面积

    “”"

    class Rect:
        def __init__(self, length, width):
            self.length = length
            self.width = width
    
        def get_area(self):
            return self.length*self.width
    
        def get_perimeter(self):
            return (self.length+self.width)*2
    
    
    r1 = Rect(4, 5)
    print(f'矩形周长为{r1.get_perimeter()}')  # 矩形周长为
    print(f'矩形面积为{r1.get_area()}')  # 矩形面积为20
    

    “”"

  3. 定义一个二维点类,拥有属性:x坐标、y坐标 拥有方法:求当前点到另外一个点的距离

    “”"

    import math
    class Point:
        def __init__(self,x=1,y=2):
            self.x = x
            self.y = y
    
        def get_distance(self, other):  # 将对象作为参数穿进去
            return math.sqrt((other.x - self.x)**2 + (other.y - self.y)**2)
    
    p1 = Point(0, 0)
    p2= Point(3, 4)
    
    res = p1.get_distance(p2)
    print(f'p1到p2d的距离为{res}')
    

    “”"

  4. 定义一个圆类,拥有属性:半径、圆心 拥有方法:求圆的周长和面积、判断当前圆和另一个圆是否外切

    “”"

    import math
    class Circle:
        pi = 3.1415926
        def __init__(self, r,center):  # 调用了上一题的类,center是一个点对象
            self.r = r
            self.center = center
            # self.x = Point().x
            # self.y = Point().y
    
        def is_ex_conta(self, other):
            return self.center.get_distance(other.center)  == self.r + other.r  # 由于center是一个点对象,所以可以调用上一题的对象方法
    
        def __repr__(self):
            return str(self.__dict__)
    
    
    c1 = Circle(2, Point(0, 0))
    c2 = Circle(3, Point(3, 4))
    print( c1.is_ex_conta(c2))
    

    “”"

  5. 定义一个线段类,拥有属性:起点和终点, 拥有方法:获取线段的长度

    “”"

    import math
    class Line:
        def __init__(self, start, end):
            self.start = start  # start和end本身都是Point的对象
            self.end = end
    
        def get_length(self):
            return self.start.get_distance(self.end)  # 因为start和end本身都是Point的对象,所以可以调用Point的对象方法
    
        def __repr__(self):
            return str(self.__dict__)
    
    l1 = Line(Point(0, 0), Point(3, 4))
    print(l1.get_length())  # 5.0
    

    “”"

你可能感兴趣的:(python)