1. Learn
  2. /
  3. 课程
  4. /
  5. Python 面向对象编程

Connected

道练习

从零编写一个类

您是一名开发可视化包的 Python 工程师。对于可视化中的任意元素,您希望能够得到该元素的位置、与其他元素的距离,并且可以轻松实现水平或垂直翻转。

任何可视化中最基础的元素是单个点。本练习中,您将从零开始为平面上的一个点编写一个类。

说明

100 XP

定义类 Point,其包含:

  • 两个属性 x 和 y —— 表示该点在平面上的坐标;
  • 一个构造函数,接收两个参数 x 和 y,用于初始化对应的属性。这两个参数应有默认值 0.0;
  • 方法 distance_to_origin(),返回该点到原点的距离,公式为 $\sqrt{x^2 + y^2}$。
  • 方法 reflect(),用于相对于 x 轴或 y 轴翻转该点:
    • 接收一个参数 axis,
    • 若 axis="x",将 y(不是笔误!)属性设置为 y 的相反数,
    • 若 axis="y",将 x 属性设置为 x 的相反数,
    • 若 axis 为其他值,打印一条错误信息。 相对于 y 轴和 x 轴对点进行翻转的示意图

注意:您可以选择使用 numpy 或 math 包中的 sqrt() 函数,但无论选择哪个包,开始定义类之前都要先导入它!


要检查您的实现,应该可以无错误地运行以下代码:

pt = Point(x=3.0)
pt.reflect("y")
print((pt.x, pt.y))
pt.y = 4.0
print(pt.distance_to_origin())

并得到如下输出:

(-3.0,0.0)
5.0