Python 基础知识教程-改进 Rocket 类

18年9月17日 · 王月成 3785 人阅读
目前为止,我们学到的 Rocket 类都是非常简单的。通过改进 __init__() 方法和增添一些方法,类会变的更加丰富和有意义。
__init__() 接受参数
__init__() 方法会在对象创建的时候自动执行。目前 Rocket 类的 __init__() 方法是相当简单的。如下所示:
目前的 __init__() 函数都是设置 x 和 y 的值为0。我们可以在其中添加关键字参数,更改对象的初始位置。如下所示:
现在,你在创建对象的时候,就可以向 x 和 y 属性传递不同的初始值。如下所示:
方法中接受参数
__init__() 方法只是类中的一个特殊发方法,帮助类创建对象。类中的任何方法都可以接受任何形式的参数。因此,move_up() 方法可以变得更灵活,我们通过接受一些关键字参数,更改 move_up() 方法为 move_rocket() 方法。
新的方法允许 rocket 往任一方向移动任意的步数。示例如下:
我们在 move_rocket() 方法中添加了两个关键字参数,x_increment 和 y_increment 。代表了位置的增量而不是最终增量。示例如下:
添加新方法
面向对象编程的强大之处在于可以在类中添加不同的属性和方法模拟真实的世界。模拟一组火箭的一个重要内容是不要让火箭互相碰撞,保持一定的距离。我们添加一个计算两个火箭之间距离的方法。示例如下所示:
希望这些简单的改进,能让你理解面向对象的精髓。你可以添加任何你想要的属性和方法来尽可能的模拟真实的场景。你的 rocket 对象可以有名字,机组容量,负载,燃料和任意的属性。你也可以定义任何你想要的方法,包括与其他火箭的相互作用,发射设施,引力场等。综上就是面向对象程序设计的核心思想了。
现在,你可以尝试写下自己的类。经过一些训练后,我们会继续学习面向对象中的继承。
动手试一试
Your Own Rocket 2
- 重新定义你的 Rocket 类。
- 定义3个空间属性,x ,y 和 z。
- 定义 __init__() 方法,接受3个参数,用来给属性 x ,y 和 z 赋初值。默认情况下 Rocket 对象的初始位置为(0 ,0, 0)。
- 定义 move_rocket() 方法。这个方法接受参数,能够使 Rocket 对象左右移动或者上下移动。
- 创建一个对象,移动 rocket 对象,并打印位置。
- 创建多个对象,移动它们并打印位置证明它们是互不影响的。
- 定义 get_distance() 方法。方法接受一个 rocket 对象参数,并计算两个 rocket 对象之间的距离。
- 使用 get_distance() 方法打印不同对象间的距离。
Python3Turtle