zoukankan      html  css  js  c++  java
  • 【Python开发】Python中的class继承

    继承是面向对象的重要特征之一,继承是两个类或者多个类之间的父子关系,子进程继承了父进程的所有公有实例变量和方法。继承实现了代码的重用。重用已经存在的数据和行为,减少代码的重新编写,python在类名后用一对圆括号表示继承关系, 括号中的类表示父类,如果父类定义了__init__方法,则子类必须显示地调用父类的__init__方法,如果子类需要扩展父类的行为,可以添加__init__方法的参数。
    下面演示继承的实现
    class Fruit:
          def __init__(self, color):
               self.color = color
               print "fruit's color: %s" %self.color
     
          def grow(self):
               print "grow..."
     
    class Apple(Fruit):                               #继承了父类
          def __init__(self, color):                  #显示调用父类的__init__方法
               Fruit.__init__(self, color)
               print "apple's color: %s" % self.color
     
    class Banana(Fruit):                              #继承了父类
          def __init__(self, color):                  #显示调用父类的__init__方法
               Fruit.__init__(self, color)
               print "banana's color:%s" %s self.color
     
          def grow(self):                             #覆盖了父类的grow方法
               print "banana grow..."
     
    if __name__ == "__main__":
    apple = Apple("red")
    apple.grow()
    banana = Banana("yellow")
    banana.grow()
    输出结果:
               fruit‘s color : red
               apple's color : red
     
               grow...
     
               fruit's color : yellow
               banana's color : yellow
               banana grow...
     
    抽象类的模拟
         抽象类是对一类事物特征和行为的抽象,抽象类由抽象方法组成,python2.5没有提供抽象类的语法,抽象类的特征是不能被实例化,但是可以通过python的NotImplementedError类来模拟抽象类,NotImplementedError类继承自python运行时错误类RuntimeError。当对抽象类进行实例化时,将抛出异常。
    模拟抽象类的实现
    def abstract():                                 #定义了全局函数
         raise NotImplimentedError(“abstract”):
             
    class Fruit:
         def __init__(self):
              if self.__class__ is Fruit:            #如果实例化的类是Fruit,则抛出异常
                   abstract()
              print "Fruit..."
     
    class Apple(Fruit):
         def __init__(self):
              Fruit.__init__(self)
              print "Apple..."
     
    if __name__ == "__main__":
    apple = Apple()                                   #输出: Fruit   Apple
    同样python也没有提供对接口的支持。接口是特殊的抽象类,接口没有数据成员,而是一组未实现的方法的集合。
  • 相关阅读:
    NVelocity语法
    Linux C socket 编程之UDP
    MFC之Radio Button按钮学习 转载
    动态加载DLL
    JS中 判断一个整数是偶数还是奇数,并输出判断结果。
    JS中判断一个整数,属于哪个范围:大于0;小于0;等于0
    JS输入分数,判定成绩等级(if和switch两种写法)
    JS中根据输入的三个数字,判断是这一年的第几天。
    JS中开发一款软件,根据公式(身高108)*2=体重,可以有10斤左右的浮动。来观察测试者体重是否合适。
    php 多语言(UTF8编码)导出Excel、CSV乱码解决办法之导出UTF8编码的Excel、CSV
  • 原文地址:https://www.cnblogs.com/huty/p/8518000.html
Copyright © 2011-2022 走看看