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. 为什么继承 ...
随机推荐
- CentOS ext4 磁盘分区 格式化 挂载
[root@appserver ~]# df -h /*查看现有分区情况*/文件系统 容量 已用 可用 已用%% 挂载点/dev/vda1 9.9G 8.2G 1.2G 88% /tmpfs 3.9G ...
- 分享一下自己写的Python 3的各种PDF文档【花了半年时间那】
这些文档花了我半年的时间去整理.因为是第一次进行整理,希望帮助后来者少走弯路.毕竟是第一次整理.哪些地方不到位,希望大家和我练习,我们一起把它做好,以下就直接给出下载地址了,都是免积分的下载奥.因此. ...
- Entity Framework管理实体关系(一):管理一对一关系
我们现在已经知道如何使用Code First来定义简单的领域类,并且如何使用DbContext类来执行数据库操作.现在我们来看下数据库理论中的多样性关系,我们会使用Code First来实现下面的几种 ...
- windows宿主机ping不通Docker容器的解决办法
网卡上有 docker is not a virtual machine, and you don't get access to the docker host via IP add ...
- rails中render 和 redirect_to的区别, each只能用在数组中,如果只有一个或者零个项,用each方法会报错undefined method `each' for #...
在render中,即使有:action,那么也仅仅是取对应的view中的模板(html.erb)而已,所以这里即使浏览器中的url是/orders/xcreate,但是显示的界面是/app/views ...
- tab标签
<ul class="nav nav-tabs" role="tablist" role="tablist" id="myT ...
- C语言 static静态变量
静态变量类型说明符是static. 静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间 ...
- Windoows窗口程序二
WNDCLASS属性style取值: CS_GLOBALCLASS--应用程序全局窗口类 CS_BYTEALIGNCLIENT--窗口客户区的水平位置8倍数对齐 CS_BYTEALIGNWINDOW- ...
- t-SNE可视化(MNIST例子)
如下所示: import pickle as pkl import numpy as np from matplotlib import pyplot as plt from tsne import ...
- am335x mux配置
/**************************************************************** * am335x mux配置 * * am335x的引脚复寄存器是C ...