最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Shuttle类如何在python3中生成?

    正文概述    2020-07-10   217

    之前提到过很多继承的内容,包括子类和父类其实也归属于这个问题。我们今天所要讲的Shuttle不完全用的是这一个类,还会涉及到继承另一个类的问题,这些话小编写在开头,以免给python初学者造成了不必要的误解。接下来就Shuttle类在python3中的生成操作,我们通过一个航天飞机的例子来讲解。


    如果你想模拟一个航天飞船,你可能要写一个新的类。但是航天飞机是火箭的一种特殊形式。你可以继承 Rocket 类,添加一些新的属性和方法,生成一个 Shuttle 类而不是新建一个类。

    航天飞船的一个重要特性是他可以重用。因此我们添加记录航天飞船服役的次数。其他基本和 Rocket 类相同。

    实现一个 Shuttle 类,如下所示:

    from math import sqrt
     
    class Rocket():
        # Rocket simulates a rocket ship for a game,
        #  or a physics simulation.
        
        def __init__(self, x=0, y=0):
            # Each rocket has an (x,y) position.
            self.x = x
            self.y = y
            
        def move_rocket(self, x_increment=0, y_increment=1):
            # Move the rocket according to the paremeters given.
            #  Default behavior is to move the rocket up one unit.
            self.x += x_increment
            self.y += y_increment
            
        def get_distance(self, other_rocket):
            # Calculates the distance from this rocket to another rocket,
            #  and returns that value.
            distance = sqrt((self.x-other_rocket.x)**2+(self.y-other_rocket.y)**2)
            return distance
        
    class Shuttle(Rocket):
        # Shuttle simulates a space shuttle, which is really
        #  just a reusable rocket.
        
        def __init__(self, x=0, y=0, flights_completed=0):
            super().__init__(x, y)
            self.flights_completed = flights_completed
            
    shuttle = Shuttle(10,0,3)
    print(shuttle)


    当一个子类要继承父类时,在定义子类的圆括号中填写父类的类名:

    class NewClass(ParentClass):

    新类的 __init__() 函数需要调用新类的 __init__() 函数。新类的 __init__() 函数接受的参数需要传递给父类的 __init__() 函数。由 super().__init__() 函数负责:

    class NewClass(ParentClass):
        
        def __init__(self, arguments_new_class, arguments_parent_class):
            super().__init__(arguments_parent_class)
            # Code for initializing an object of the new class.

    super()函数会自动将self参数传递给父类。你也可以通过用父类的名字实现,但是需要手动传递self参数。如下所示:

    class Shuttle(Rocket):
        # Shuttle simulates a space shuttle, which is really
        #  just a reusable rocket.
        
        def __init__(self, x=0, y=0, flights_completed=0):
            Rocket.__init__(self, x, y)
            self.flights_completed = flights_completed

    这样写看起来可读性更高,但是我们更倾向于用 super() 的语法。当你使用 super() 的时候,不必关心父类的名字,以后有改变时会变得更加灵活。而且随着继承的学习,以后可能会出现一个子类继承自多个父类的情况,使用 super() 语法就可以在一行内调用所有父类的 __init__() 方法。

    今天Shuttle的内容比较多,结合了科技类的航天飞机,两者都成了难以理解的内容了。小伙伴们不要灰心,多试几遍就可以了。


    起源地下载网 » Shuttle类如何在python3中生成?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元