python的抽象类实战_python 模拟抽象类

继承是面向对象的重要特征之一,继承是两个类或者多个类之间的父子关系,子进程继承了父进程的所有公有实例变量和方法。继承实现了代码的重用。重用已经存在的数据和行为,减少代码的重新编写,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也没有提供对接口的支持。接口是特殊的抽象类,接口没有数据成员,而是一组未实现的方法的集合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值