Python 中的类继承

pythonserver side programmingprogramming

您无需从头开始,而是可以通过在新类名后的括号中列出父类,从现有类派生出一个类来创建一个类。

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

语法

派生类的声明方式与父类非常相似;但是,类名后会给出要继承的基类列表 −

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 attribute :", 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

输出

执行上述代码时,会产生以下结果 −

调用子构造函数
调用子方法
调用父方法
父属性:200

类似地,您可以从多个父类驱动一个类,如下所示 −

class A:# 定义您的类 A
.....
class B:# 定义您的类 B
.....
class C(A, B):# A 和 B 的子类
.....

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

  • 如果给定的子类 sub 确实是超类 sup 的子类,则 issubclass(sub, sup) 布尔函数返回 true。
  • isinstance(obj, Class)如果 obj 是 Class 类的实例或者是 Class 子类的实例,则布尔函数返回 true

相关文章