python的类继承与派生
一、继承和派生简介:
其实是一个一个事物站在不同角度去看,说白了就是基于一个或几个类定义一个新的类。比如定义了动物类接着派生出了人类,你也可以说人类继承了动物类。一个意思。此外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的类继承与派生的更多相关文章
- Python之面向对象继承和派生
Python之面向对象继承和派生 什么是继承: 继承是一种创建新的类的方法.在Python中,新建的类可以继承自一个或多个父类.原始类称为基类或超类. 新建的类称为派生类或子类. Python中类的继 ...
- Python面向对象编程——继承与派生
Python面向对象编程--继承与派生 一.初始继承 1.什么是继承 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题. 继承是一种创 ...
- python 全栈开发,Day20(object类,继承与派生,super方法,钻石继承)
先来讲一个例子 老师有生日,怎么组合呢? class Birthday: # 生日 def __init__(self,year,month,day): self.year = year self.m ...
- python 面向对象之继承与派生
一:初识继承 1,什么是继承? 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题 继承是一种创建新类的方式,在python中,新建的类 ...
- Python基础之继承与派生
一.什么是继承: 继承是一种创建新的类的方式,新建的类可以继承一个或过个父类,原始类成为基类或超类,新建的类则称为派生类 或子类. 其中,继承又分为:单继承和多继承. class parent_cla ...
- python面向对象之继承与派生
一.继承 继承是一种创建新的类的方式,在python中,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类. python中类的继承分为:单继承和多继承,如果是多继承的 ...
- C++中的类继承(2)派生类的默认成员函数
在继承关系里面, 在派生类中如果没有显示定义这六个成员 函数, 编译系统则会默认合成这六个默认的成员函数. 构造函数. 调用关系先看一段代码: class Base { public : Base() ...
- python(类继承)
一.继承 1.单继承 一个对象使用另一个对象的属性和方法,被继承的类也称父类 (1)父类与子类的方法不一样 class Four(): def sub(self,x,y): return x + y ...
- 4月12日 python学习总结 继承和派生
一.继承 什么是继承: 继承是一种新建类的方式,在python中支持一个子类继承多个父类 新建类称为子类或派生类 父类可以称之为基类或者超类 子类会遗传父类的属性 2. 为什么继承 ...
随机推荐
- 用lua实现ByteArray和ByteArrayVarint
许多 Actionscript 程序员已经从 Flash 转到 Cocos2d-x 了.那么以前的那些超级好用的类库都不见了,只好重新来过. 我利用 Lua 和 lpack 库实现了一套 lua版本的 ...
- HTTP API 设计指南(结尾)
前言 这篇指南介绍描述了 HTTP+JSON API 的一种设计模式,最初摘录整理自 Heroku 平台的 API 设计指引 Heroku 平台 API 指引. 这篇指南除了详细介绍现有的 API 外 ...
- 看了这个才发现jQuery源代码不是那么晦涩
很多人觉得jquery.ext等一些开源js源代码 十分的晦涩,读不懂,遇到问题需要调试也很费劲.其实我个人感觉主要是有几个方面的原因: 1.对一些js不常用的语法.操作符不熟悉 2.某个functi ...
- oracle权限详解
一.权限分类:系统权限:系统规定用户使用数据库的权限.(系统权限是对用户而言). 实体权限:某种权限用户对其它用户的表或视图的存取权限.(是针对表或视图而言的). 二.系统权限管理:1.系统权限分类: ...
- Qt中delete的问题
最近项目遇到了一个bug,压力测试ui总会崩溃,gdb调试未果,跑到了库函数,无从查起: (gdb)bt #0 0x4146b1e4 in QWidgetPrivate::drawWidget(QPa ...
- 【F12】修改 DevTools的主题
1.点击setting
- e640. 使一个组件可拖动
This example demonstrates the code needed to make a component draggable. The object being transferre ...
- Zookeeper 基础
在深入了解ZooKeeper的运作之前,让我们来看看ZooKeeper的基本概念.我们将在本章中讨论以下主题:1.Architecture(架构)2.Hierarchical namespace(层次 ...
- Project Navigator Help: Creating a Workspace in Xcode
Creating a Workspace Start a multiproduct development endeavor by creating a workspace. 1.Choose Fil ...
- C语言----项目构建Make,Automake,CMake
http://blog.csdn.net/dc_726/article/details/48978849