python学习之类的继承

面向对象中一个重要的特性就是继承,继承的好处就是提高代码的重用率,减少不必要的代码。继承是父类与子类的关系,当子类继承了父类后,就具有了父类的所有变量和方法。在python中定义继承的语法是:class 派生类名(基类名)。在使用python的继承时需要注意一下几点:

(1)当父类定义了__init__()初始化方法时,子类不会自动调用,而需要我们显示调用,如果我们要扩展父类的变量,可以在__init__()添加参数。

(2)在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。

(3)Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。

举例说明



父类

#BaseModle
class BaseClass:
    def __init__(self,name,age):
        self.name=name
        self.age=age
        print ("baseclass is inited")
    def speak(self,sth):
        print("Baseclass is speaking :%s"%sth);

if (__name__==‘__main__‘):
    print("run by myself")
    BaseClass()
else :
    print("i am import module")

‘‘‘

python中的__name__属性:它表示当我们执行这个模块时,看它是否是用户独立执行的,还是通过import导入后执行的,例如在这个例子中,我们执行派生模块SubModule,BaseModulde是导入的模块,因此输出了i am import module。

每个Python模块都有它的__name__,如果它是‘__main__‘,这说明这个模块被用户单独运行,我们可以进行相应的恰当操作。

‘‘‘



派生类

#SubModule
import BaseModule
class SubClass(BaseModule.BaseClass):#需要加上模块名,否则出错
    def __init__(self,name,age,salary):
        BaseModule.BaseClass.__init__(self,name,age)#显示调用父类的初始化函数,并扩展变量
        self.salary=salary
        print("subClass is inited")
    def talk(self ,sth):
        print("%s is talking %s"%(self.name,sth))
        BaseModule.BaseClass.speak(self,sth)#调用父类方法时需要指明模块名.父类名
if(__name__=="__main__"):
    print("run by myself")
    s=SubClass("yping",25,1000)
    s.talk("a story")


运行结果

>>> 
i am import module
run by myself
baseclass is inited
subClass is inited
yping is talking a story
Baseclass is speaking :a story
>>>

结果分析:

这里首先输出“i am import module”,说明程序是先从(__name__="__main__")判断开始,首先执行父类的(__name__="__main__")判断,由于现在不是直接执行BaseModule模块,因此输出“i am import module”,接着执行子类的入口函数,实例化了一个SubClass类,首先父类初始化,然后派生类初始化,接着执行talk()函数,再调用父类speak()函数。

python学习之类的继承

时间: 08-09

python学习之类的继承的相关文章

Python学习 Day 8 继承 多态 Type isinstance dir __slots__

继承和多态 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Superclass). >>> class Animal(object):#名为Animal的class defrun(self): print'Animal is running...' >>> class Dog(Animal):#从Animal类继承 pass

Python学习记录七---继承、多态和封装

1.创建类 创建文件 test7.py #! /usr/bin/env python class Person: def setName(self, name): self.name = name def getName(self): return self.name def greet(self): print "hello, world! I am %s."% self.name foo = Person() foo.setName('yilia') foo.getName() f

Python学习-类的继承

1 继承: 2 #python2 经典类是按深度优先来继承的,新式类是按广度优先来继承的 3 #python3 经典类和新式类都是按广度优先来继承的 4 5 6 7 #经典类:class People: 8 class People(object): #这个是新式类,多继承的时候有了改变 9 10 def __init__(self, name, age): 11 self.name =name 12 self.age = age 13 14 15 def eat(self): 16 print

Python学习---django模板继承180123

django模板继承  --20180123 a.include 模板标签 b.extend(继承)模板标签 ------include 模板标签 该标签允许在(模板中)包含其它的模板的内容. 标签的参数是所要包含的模板名称,可以是一个变量,也可以是用单/双引号硬编码的字符串. 每当在多个模板中出现相同的代码时,就应该考虑是否要使用 {% include %} 来减少重复. ------extend(继承)模板标签 先构造一个基础框架模板,而后在其子模板中对它所包含站点公用部分和定义块进行重载.

转 python语法学习面向对象之继承

传送门 python语法学习面向对象之继承 只要涉及到面向对象,”类“是必须出现的一个代名词. 类和对象是面向对象编程的两个主要方面.类创建一个新类型,而对象是这个类的实例. 类的一些概念: 包括初始化方法__init__,可以理解为构造,self,理解为this,等等在前一篇文章中介绍过,现在就学习类的继承. 继承: 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制.继承完全可以理解成类之间的类型和子类型关系. 需要注意的地方:继承语法   class 派生类

Python学习手册之类和继承

在上一篇文章中,我们介绍了 Python 的函数式编程,现在我们介绍 Python 的类和继承. 查看上一篇文章请点击:https://www.cnblogs.com/dustman/p/10010690.html 类先前,我们研究过两种编程范式--命令式(使用语句.循环和函数)和函数(使用纯函数.高阶函数和递归).接下来我们学习一个编程方式是面向对象编程 -- Object Oriented Programming,简称 OOP,这是一种程序设计思想.OOP 把对象作为程序的基本单元,类描述对

python学习第十六天 --继承进阶篇

这一章节主要讲解面向对象高级编程->继承进阶篇,包括类多继承介绍和继承经典类和新式类属性的查找顺序不同之处. 多继承 上一章节我们讲到继承,子类继承父类,可以拥有父类的属性和方法,也可以进行扩展.但是有时候会发现,子类需要继承一个类的方法,又要继承另一个类的方法,才能完成要实现的功能.怎么办?python给我们提供了多继承的概念.类似于C++语言,俗称类的多继承. 看个例子: >>> class Animal(object): def __init__(self,name): se

Python学习笔记-面向对象进阶(一)封装、多态、继承

一.初识继承 1.什么是继承? 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称为基类或超类,新建的类称为派生类或子类.子类会"遗传"父类的属性,从而解决代码重用问题. # python中类的继承分为:单继承和多继承 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1(ParentClass1): #单继承,基类是ParentClass1

Python学习笔记--未经排版

Python 学习笔记 Python中如何做到Print() 不换行 答:Print("输出内容",end='不换行的分隔内容'),其中end=后面为2个单引号 注:在Python 2.x中,Print "输出内容", 即在输出内容后加一逗号 Python中 is 和 == 的区别 答:Python中的对象包含三要素:id.type.value 其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值 is判断的是a对象是否就是b对象,是通过id来