一、继承和派生简介:

  其实是一个一个事物站在不同角度去看,说白了就是基于一个或几个类定义一个新的类。比如定义了动物类接着派生出了人类,你也可以说人类继承了动物类。一个意思。此外python类似于C和C++支持多继承,一个类可以继承多个类,比如爸爸妈妈生了孩子,孩子继承了爸爸妈妈的属性和方法等等。此外由于python3中的所有类都是新式类,python2中也可以通过继承object来定义新式类,所以治理统一按照新式类的语法来介绍,为了兼容python2和python3,个人推荐一律使用新式类。

二、如何定义类的继承与多继承

1、定义类的继承与多继承

1.1继承

 class person(object):
def __init__(self,name,age,gender,pid):
self.name = name
self.age = age
self.gender = gender
self.pid = pid
print("Create Person")
def showname(self):
print("Name:%s"%self.name) class student(person):
def __init__(self,name,age,gender,pid,sid,level,school):
super(student,self).__init__(name,age,gender,pid)
self.sid = sid
self.level = level
self.school = school
print("Create Student") def showsid(self):
print("StudentID:%s"%self.sid)

1.2多继承

 class father(object):
def __init__(self,name,money):
self._fname = name
self.fmoney = money class mother(object):
def __init__(self,name,money):
self._mname = name
self.mmoney = money class baby(father,mother):
def __init__(self,n0,n1,n2,m1,m2,):
self.name = n0
father.__init__(self,n1,m1)
mother.__init__(self,n2,m2)
self.money = self.fmoney + self.mmoney

三、变量和属性的继承约束:

1、实例的属性与方法的继承要求:

#实例属性与方法的继承:
"""
1、普通实例变量可以继承,保护实例(单下划线)变量可以继承,隐藏实例(双下划线)变量不可继承。
2、普通实例方法可以继承,保护实例(单下划线)方法可以继承,隐藏实例(双下划线)方法不可继承。
"""

2、类的属性与方法的继承要求:

注:类变量是所有该类的实例和类本身的一个全局变量,类变量修改了,属性调用这个变量也随之修改了。而实例变量却是相互独立。类属性和方法,实例都可以调用。

#类属性与方法的继承:
"""
1、普通类变量可以继承,保护类(单下划线)变量可以继承,隐藏类(双下划线)变量不可继承。
2、普通类方法可以继承,保护类(单下划线)方法可以继承,隐藏类(双下划线)方法不可继承。
"""

3、静态方法的继承:

静态方法的继承约束与前两个完全相同,类和实例都可以调用。

4、对于父类的实例、类、静态方法或属性的调用:

继承之后可以直接调用,只要满足进程约束条件即可。

四、重载父类方法:

1、子类重载父类(类、实例、静态)方法后,子类和子类对象会按照新定义的(类、实例、静态)方法去执行。父类及其实例不变,保持原方法执行。

 class person(object):
check = 0
def __init__(self,name,age,gender,pid):
self.name = name
self.age = age
self.gender = gender
self.pid = pid
print("Create Person")
@classmethod
def __showcheck(cls):
print(cls.check)
def showid(self):
print("PersonID:%s"%self.pid)
@staticmethod
def abcd():
print "abcd" class student(person):
def __init__(self,name,age,gender,pid,sid,level,school):
super(student,self).__init__(name,age,gender,pid)
self.sid = sid
self.level = level
self.school = school
print("Create Student") def showid(self):
print "********************************"
print("PersonID:%s"%self.pid)
print("StudentID:%s"%self.sid)
print "********************************"

python的类继承与派生的更多相关文章

  1. Python之面向对象继承和派生

    Python之面向对象继承和派生 什么是继承: 继承是一种创建新的类的方法.在Python中,新建的类可以继承自一个或多个父类.原始类称为基类或超类. 新建的类称为派生类或子类. Python中类的继 ...

  2. Python面向对象编程——继承与派生

    Python面向对象编程--继承与派生 一.初始继承 1.什么是继承 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题. 继承是一种创 ...

  3. python 全栈开发,Day20(object类,继承与派生,super方法,钻石继承)

    先来讲一个例子 老师有生日,怎么组合呢? class Birthday: # 生日 def __init__(self,year,month,day): self.year = year self.m ...

  4. python 面向对象之继承与派生

    一:初识继承 1,什么是继承? 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题 继承是一种创建新类的方式,在python中,新建的类 ...

  5. Python基础之继承与派生

    一.什么是继承: 继承是一种创建新的类的方式,新建的类可以继承一个或过个父类,原始类成为基类或超类,新建的类则称为派生类 或子类. 其中,继承又分为:单继承和多继承. class parent_cla ...

  6. python面向对象之继承与派生

    一.继承 继承是一种创建新的类的方式,在python中,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类. python中类的继承分为:单继承和多继承,如果是多继承的 ...

  7. C++中的类继承(2)派生类的默认成员函数

    在继承关系里面, 在派生类中如果没有显示定义这六个成员 函数, 编译系统则会默认合成这六个默认的成员函数. 构造函数. 调用关系先看一段代码: class Base { public : Base() ...

  8. python(类继承)

    一.继承 1.单继承 一个对象使用另一个对象的属性和方法,被继承的类也称父类 (1)父类与子类的方法不一样 class Four(): def sub(self,x,y): return x + y ...

  9. 4月12日 python学习总结 继承和派生

    一.继承 什么是继承:   继承是一种新建类的方式,在python中支持一个子类继承多个父类   新建类称为子类或派生类   父类可以称之为基类或者超类   子类会遗传父类的属性 2.  为什么继承 ...

随机推荐

  1. 为什么手机无法执行应用? Values之谜

    欢迎Follow我的GitHub, 关注我的CSDN, 精彩不断! CSDN: http://blog.csdn.net/caroline_wendy/article/details/68923156 ...

  2. JavaScript中的Boolean 方法与Number方法

    <html> <head> <script type="text/javascript"> //创建 var str = "aaafg ...

  3. mysql修改密码与password字段不存在mysqladmin connect to server at localhost failed

    mysqladmin: connect to server at 'localhost' failed 停止mysql服务 systemctl stop mysql 安全模式启动 chown -R m ...

  4. 【转】java基本数据类型vs封装数据类型

    1.基本概念 说java是面向对象的语言是正确的,但是她不纯,基本数据类型就不是对象. 基本数据类型可以大致分为三类:数据型:int.short.long.byte.float.double字符型:c ...

  5. e667. 在给定图像中创建缓冲图像

    An Image object cannot be converted to a BufferedImage object. The closest equivalent is to create a ...

  6. (转)MFC的ClistCtrl删除选中多行项目

    MFC的ClistCtrl控件添加了多行数据后,若要删除选中的多行数据,可以使用ClistCtrl的成员函数,在网上找了很多例子,发现都有问题,因为在删除ClistCtrl行的时候,删除行下面的行会上 ...

  7. pyqt的setObjectName()/findChild()

    根据设置的Name标示查找组件的对象,关键函数:setObjectName()/findChild() findChild()/2:需要两个参数, 参数一:组件的类型,如QLineEdit.QPush ...

  8. Emojis support in Apple push notification

    I am working on iPhone app named "INTERSTIZIO".In this I have implemented functionality li ...

  9. oracle解决多表关联分组查询问题

    做了一个功能需要分组查询,同时查询A表分组查询的ID需要关联B表的数据,本来想两个表关联查询,但是报group by 语法不正确.所以做了以下修改. select count(*), cindexid ...

  10. _mysql_exceptions.ProgrammingError:(2014, "commands out of sync; you can't run this command now")

    今天,测试dashboard上的一些graph, 发现,当多个graph同时向后台请求数据(异步)的时候, 出现了上述错误.而且,三个bug交替出现,另外两个bug分别是:python stop re ...