【作业】2022.5.6 面向对象

本文介绍了如何定义和实现狗、人类、矩形、二维点、圆、线段等类,包括它们的属性和方法,如狗的叫声、人类遛狗、图形计算等。展示了面向对象编程的基础概念在实际问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

class Dog:
    """
    这是一个狗类
    """

    def __init__(self, name, gender, breed):
        self.name = name
        self.gender = gender
        self.breed = breed

    def bark(self):
        """
        这是一个狗吠的函数
        :return: 吠的话
        """
        return f'我是一只名叫{self.name}{self.gender} {self.breed}犬'


class Human:
    """
    这是一个人类
    """

    def __init__(self, name, age, dog=None):
        self.name = name
        self.age = age
        self.dog = dog

    def walk_the_dog(self):
        """
        这是一个遛狗的函数
        :return: 遛狗时说的话
        """
        if self.dog:
            return f'{self.name}{self.age}岁,是个冒险家,正在溜一条名叫{self.dog.name}的狗'
        else:
            return '没有狗'


if __name__ == '__main__':
    dog1 = Dog('Ajax', 'male', 'bichon')
    print(dog1.bark())
    # 我是一只名叫Ajax的male bichon犬

    human1 = Human('John Wick', 50, dog1)
    print(human1.walk_the_dog())
    # John Wick,50岁,是个冒险家,正在溜一条名叫Ajax的狗
  1. 定义一个矩形类,拥有属性:长、宽 拥有方法:求周长、求面积
class Rect():
    """
    这是一个矩形类
    """

    def __init__(self, lenth, width):
        self.lenth = lenth
        self.width = width

    def perimeter(self):
        """
        这是一个计算周长的函数
        :return: 周长
        """
        return (self.lenth + self.width) * 2

    def area(self):
        """
        这是一个计算面积的函数
        :return: 面积
        """
        return self.lenth * self.width


if __name__ == '__main__':
    rect1 = Rect(10, 20)
    print(f'周长:{rect1.perimeter()},面积:{rect1.area()}')	 # 周长:60,面积:200
  1. 定义一个二维点类,拥有属性:x坐标、y坐标 拥有方法:求当前点到另外一个点的距离
class TwoDCoordinateDepartment:
    """
    这是一个二维坐标系中的点的类
    """

    def __init__(self, x=0, y=0):
        self.x = x
        self.y = y

    def distance(self, point2):
        """
        这是一个计算两点间距离的函数
        :param point2: 目标点
        :return: 距离
        """
        return f'{((self.x - point2.x) ** 2 + (self.y - point2.y) ** 2) ** 0.5:.2f}'


if __name__ == '__main__':
    point1 = TwoDCoordinateDepartment(3, 6)
    point2 = TwoDCoordinateDepartment(1, 1)
    print(point1.distance(point2))  # 5.39
  1. 定义一个圆类,拥有属性:半径、圆心 拥有方法:求圆的周长和面积、判断当前圆和另一个圆是否外切
class Circle:
    """
    这是一个圆类
    """
    pi = 3.14

    def __init__(self, r, center=TwoDCoordinateDepartment(0, 0)):
        self.r = r
        self.center = center

    def is_ex_tan(self, circle2):
        """
        这是一个判断两圆是否外切的函数
        :param circle2: 另一个圆
        :return: 是否外切
        """
        distance = self.center.distance(circle2.center)
        if distance == circle2.r + self.r:
            return '两圆外切'
        else:
            return '两圆不外切'


if __name__ == '__main__':
    circle1 = Circle(1)
    circle2 = Circle(1, TwoDCoordinateDepartment(2, 0))
    print(circle1.is_ex_tan(circle2))
    # 两圆外切
  1. 定义一个线段类,拥有属性:起点和终点, 拥有方法:获取线段的长度
class Line:
    """
    这是一个线段类
    """

    def __init__(self, start=TwoDCoordinateDepartment(0, 0), end=TwoDCoordinateDepartment(0, 0)):
        self.start = start
        self.end = end

    def lenth(self):
        """
        这是一个计算线段长度的函数
        :return: 长度
        """
        return self.start.distance(self.end)


if __name__ == '__main__':
    line1 = Line(start=TwoDCoordinateDepartment(0, 0), end=TwoDCoordinateDepartment(1, 5))
    print(line1.lenth())		# 5.10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sprite.Nym

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值