您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python面向对象之继承代码详解

5b51 2022/1/14 8:15:24 python 字数 12858 阅读 310 来源 www.jb51.cc/python

本文研究的主要是Python面向对象之继承的相关内容,具体如下。 Python继承 即一个派生类(derivedclass)继承基类(bassclass)字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计

概述

本文研究的主要是Python面向对象之继承的相关内容,具体如下。

Python 继承

一个派生类(derived class)继承基类(bass class)字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计,一个Cat类型的对象派生自Animal类,这是模拟”是一个(is-a)”关系(例如,Cat是一个Animal)。

继承实现了代码的重用。

继承的基本语法:

class 派生类名(基类名1 [,基类名2....]):

基类名写在括号里,基本类是在类定义的时候,在元组之中指明的。如果在继承元组中列了一个以上的类,那么它就被称作”多重继承” 。

多重继承

Python支持多重继承,也就是一个子类可以有多个父类父类间用逗号隔开。

在多重继承中,子类有那么多的父类,那子类实例化时,构造方法是怎样调用的呢?

这里需要记住一点:

多重继承中,构造方法以第一个父类为中心。如果子类重新定义了构造方法,就不会调用父类的构造方法,构造就会只调用一个父类的构造方法,并且如果父类中有同名的方法时,通过子类的实例对象去调用的该方法也是第一个父类中的方法。当然如果你需要在子类中用来某个或某几个父类的构造方法,需要显示的去调用父类的构造方法

在python中继承中的一些特点:

实例:

class Parent(object): # 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 Child1(Parent): # define child1 class 
 def __init__(self): 
  print "Calling child1 constructor" 

 def childMethod(self): 
  print 'Calling child1 method' 
  Parent.parentMethod(self) #调用基类的方法,所以要加上参数self

class Child2(Parent): # define child2 class 
 def childMethod(self): 
  print 'Calling child2 method' 
  self.parentMethod() #子类调用自己从父类那继承过来的父类方法

c1 = Child1() # 实例化子类 1
c2 = Child2() # 实例化子类 2
c1.childMethod() # 调用子类的方法 
c2.childMethod() # 调用子类的方法 
c1.parentMethod() # 调用父类方法 
c1.setAttr(200) # 再次调用父类方法 
c1.getAttr() # 再次调用父类方法

执行结果:

Calling child1 constructor
Calling parent constructor
Calling child1 method
Calling parent method
Calling child2 method
Calling parent method
Calling parent method
Parent attribute : 200

解析:

c1 = Child1() # 实例化子类 1
c2 = Child2() # 实例化子类 2

这两句是创建Child1类和Child2类的实例对象,创建实例对象时,就会自动去调类的构造方法,如果子类中没有建立自己的构造方法,就会调用父类的构造方法,所以打印结果为:

Calling child1 constructor
Calling parent constructor

c1.childMethod() # 调用子类的方法
c2.childMethod() # 调用子类的方法

上面两句分别调用的是对应子类的子类方法,由于在子类中都分别有调用父类方法,所以打印结果为:

Calling child1 method
Calling parent method
Calling child2 method
Calling parent method

注意:

子类继承父类以后,如果在子类在对父类方法进行改造时,由需要用到父类方法时,这个时候在子类中想要调用父类方法时,该怎么做呢?有两种方法

第一种是直接用父类的类名.方法名去调用父类方法,但是需要注意的时,这种调用方法必须将self作为参数传进去并且作为第一个参数,表示指向指向这个类的实例本身。

第二种是直接用self去调用父类方法,为什么可以这样调用呢?因为一旦子类继承了父类,那么子类就拥有父类所有的方法属性,所以此时父类方法属性就相当于子类自己了,所以可以直接用self去直接调用实例的方法,而不用再传入self参数了。

使用issubclass()或者isinstance()方法来检测类之间的关系:

总结

以上就是本文关于Python面向对象之继承代码详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持

总结

以上是编程之家为你收集整理的Python面向对象之继承代码详解全部内容,希望文章能够帮你解决Python面向对象之继承代码详解所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶