Python3.2官方文档翻译--继承

6.5 继承

当然,一门语言特性如果不支持继承那么名称类就失去了价值。子类继承父类的方法如下:

class DerivedClassName(BaseClassName):

<statement-1>

.

.

.

<statement-N>

名称BaseClassName必须定义在一个包含派生类定义的作用域中。在基类名称的位置上,其他随意表达式都是允许的、例如,当基类定义在其他模块中,这也是可用的。

class DerivedClassName(modname.BaseClassName):

派生类的执行过程和父类执行过程是相同的。当类对象构造好后,基类就被记住了。这为了解决属性引用问题:如果一个请求的属性在类中没有发现,程序就会搜素它的基类。如果基类它本身也是从其他类派生而来,那么就系继续搜素。

对派生类的实例化没有特别之处。DeriverdClassName()创建了一个类的新实例。方法引用按照如下使用:对应的类属性可以被搜索的,如果需要就会继续在基类中查询。如果这指向函数对象,则方法引用是合法的。

派生类可以重写基类的方法。因为当调用同对象的其他方法时候,方法没有特殊的权限。调用定义在同一基类的该基类方法可能终止派生类方法的覆盖。(对于C++程序员来说,在python中所有的方法都是有效虚拟的)

在派生类中一个重写方法事实上想扩展方法,而不是简单的代替同名的基类方法。最简单直接调用基类的方法就是用: BaseClassName.methodname(self, arguments)。这个对客户也非常有空。(注意,如果基类在全局作用域中和BaseClassName都可以访问, 这种方法才有效)

Python有两种实现继承的内置函数:

方法一: 用isinstance()方法来检查实例类型:只有obj._class_is 是整型或者其他从int继承的类,isinstance(obj, int)才会返回真。

方法二: 用issubclass()方法来检查类继承:issubclass(bool, int)结果是真得,因为boolint的一个子类。但是issubclass(float, int)是假的因为float不是int的子类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值