Python中的类继承

除了从头开始,您还可以通过在新类名称后面的括号中列出父类来从现有类派生该类,从而创建一个类。

子类继承其父类的属性,您可以像在子类中定义它们一样使用这些属性。子类也可以覆盖父类的数据成员和方法。

语法

派生类的声明与父类很相似;但是,在类名称后给出了要继承的基类列表-

class SubClassName (ParentClass1[, ParentClass2, ...]):
'Optional class documentation string'
class_suite

示例

#!/usr/bin/python
class Parent: # define parent class
   parentAttr = 100
   def __init__(self):
      print "Calling parent constructor"
   def parentMethod(self):
      print 'Calling parent method'
   def setAttr(self, attr):
      Parent.parentAttr = attr
   def getAttr(self):
      print "父级属性:", Parent.parentAttr
class Child(Parent): # define child class
   def __init__(self):
      print "Calling child constructor"
   def childMethod(self):
      print 'Calling child method'
c = Child()       # instance of child
c.childMethod()   # child calls its method
c.parentMethod()  # calls parent's method
c.setAttr(200)    # again call parent's method
c.getAttr()       # again call parent's method

输出结果

执行以上代码后,将产生以下结果-

Calling child constructor
Calling child method
Calling parent method
父级属性: 200

以类似的方式,您可以从多个父类驱动一个类,如下所示:

class A: # define your class A
.....
class B: # define your class B
.....
class C(A, B): # subclass of A and B
.....

您可以使用issubclass()isinstance()函数检查两个类和实例之间的关系。

  • issubclass(子,SUP)如果给定的子类子的确是超SUP的子类布尔函数返回TRUE。

  • isinstance(OBJ,班)的布尔函数如果obj是Class类的实例,或者为类的子类的实例,则返回true