一. 类的继承
继承,顾名思议就知道是它的意思,举个例子说明,你现在有一个现有的A类,现在需要写一个B类,但是B类是A类的特殊版,我们就可以使用继承,B类继承A类时,B类会自动获得A类的所有属性和方法,A类称为父类,B类称为子类,子类除了继承父类的所有属性和方法,还可以自定义自己的属性和方法。大大增加了代码的复用性。
在本章中,我们可以继承object 类,object类是所有类的父类,所有的类都默认继承object类,它是一个超级类,如果不写,默认继承object。
继承类的格式:
class A(父类):
。。。。
 
1》继承,格式
#/usr/bin/python
#coding=utf-8
#@Time :2017/11/6 9:25
#@Auther :liuzhenchuan
#@File :类的继承.py
# A类
class A(object):
pass
#继承,只要把A 写在B 的括号里就是继承,B继承A里边的方法,先去B找,B里边没有方法在去A找
class B(A):
pass
 
 
示例:
###子类继承。子类继承父类,从子类调用方法时,先从子类自己查找,如果子类自己有就调用自己的,如果子类没有在从父类调用那个
 
class parent(object):
name = 'parent'
sex = 'F'
def __init__(self):
print ('my name is {0}'.format(self.name))
def get_name(self):
return self.name
def get_sex(self):
return self.sex
print '##################打印父类方法##################'
a = parent()
print a.get_name()
print a.get_sex()
 
#定义子类child继承父类
class child(parent):
name = 'child'
age = '10'
 
#默认方法__init__()
def __init__(self):
print ('my name is {0}'.format(self.name))
 
#定义子类的方法,先从子类自己查找,子类有这个方法的话直接调用,没有的话去父类找
def get_age(self):
return self.age
 
#子类child 中没有get_sex 方法,从父类找
def get_sex(self):
return self.sex
 
#定义子类方法
def hello(self):
return 'hello world'
print '##################打印子类方法######################'
#实例化子类
b = child()
print b.get_age()
print b.get_sex()
print b.get_name()
print b.hello()
 
>>>
##################打印父类方法##################
my name is parent
parent
F
##################打印子类方法######################
my name is child
10
F
child
hello world
 
 
二.多继承
1》 python 的类支持多继承,而java没有多继承,但是可以有多接口的实现python的多继承很简单,下面我们来看一下多继承的格式:
class A: #定义类A
.....................
 
class B: #定义类B
 
 
class C(A,B): #继承类A和B
...............................
多继承其实需要在父类的位置,直接写多个父类就可以,然后用“,”分开就可以了,C 类就同时继承了A类和B类。
 
2》python 类的继承注意事项:
a. 在继承中,类的构造(__init__方法),不会自动调用,它需要在子类的构造中亲自调用。也就是子类需要自己写自己的__init()__方法。
 
b. python总是首先调用子类中的方法,如果 子类中没有找到,才回去父类中查找。
 
 
3》多继承格式
class A(object):
pass
#继承,只要把A 写在B 的括号里就是继承,B继承A里边的方法,先去B找,B里边没有方法在去A找
class B(object):
pass
#多继承,就是在C类里边写两个
class C(A,B):
pass
 
多继承实例:
 class parent(object):
name = 'parent'
sex = 'F'
coller = 'yellow'
language = 'chinese'
def __init__(self):
print 'my name is {0}'.format(self.name)
def get_sex(self):
return self.name
a = parent()
a.get_sex()
print '#'*15 class child(object):
name = 'child'
coller = 'yellow'
def __init__(self):
print 'my name is {0}'.format(self.name)
def get_coller(self):
return self.coller
b = child()
print b.get_coller()
print '#'*15 class grandson(parent,child):
name = 'grandson'
def __init__(self):
print 'my name is {0}'.format(self.name)
def get_coller(self):
return self.coller
def get_language(self):
return self.language
c = grandson()
print c.get_coller()
print c.get_language()

运行如下:

>>>
my name is parent
###############
my name is child
yellow
###############
my name is grandson
yellow
chinese
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

python 基础 5.2 类的继承的更多相关文章

  1. Python 基础之面向对象类的继承与多态

    一.继承 定义:一个类除了拥有自身的属性方法之外,还拥有另外一个类的属性和方法继承: 1.单继承 2.多继承子类: 一个类继承了另外一个类,那么这个类是子类(衍生类)父类:一个类继承了另外一个类,被继 ...

  2. python基础——使用元类

    python基础——使用元类 type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个Hello的class,就写一个hello. ...

  3. Python基础:新式类的属性访问

    一.概述 二.准备工作 1.讨论对象 2.名词解释 三.实例绑定的属性访问 1.获取属性 一般规则 参考源码 示例验证 2.设置属性 一般规则 参考源码 示例验证 3.删除属性 一般规则 参考源码 示 ...

  4. 二十三. Python基础(23)--经典类和新式类

    二十三. Python基础(23)--经典类和新式类 ●知识框架   ●接口类&抽象类的实现 # 接口类&抽象类的实现 #①抛出异常法 class Parent(object):    ...

  5. Python基础知识:类

    初级篇 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 1.面向对象三大特性 ...

  6. Python基础:元类

    一.概述 二.经典阐述 三.核心总结 1.类的创建过程 2.元类的使用惯例 四.简单案例 1.默认行为 2.使用元类 五.实践为王 一.概述 Python虽然是多范式的编程语言,但它的数据模型却是 纯 ...

  7. python基础(14)-反射&类的内置函数

    反射 几个反射相关的函数可参考python基础(10)-匿名函数&内置函数中2.2.4反射相关 类的一些内置函数 __str__()&__repr__() 重写__str__()函数类 ...

  8. python基础之面向对象的多继承以及MRO算法

    内容梗概: 1. python多继承 2. python经典类的MRO 3. python新式类的MRO C3算法 1.python多继承 class Shen: def fly(self): pri ...

  9. 2015/9/28 Python基础(19):类的定制和私有性

    用特殊方法定制类前面我们讲了方法的两个重要方面:首先,方法必须在调用前被绑定(到它们相应类的某个实例中):其次,有两个特殊方法可以分别作为构造器和解构器的功能,分别名为__init__()和__del ...

随机推荐

  1. 使用UICollectionView遇到的各种坑

    1)头视图和尾部视图的添加 UICollectionReusableView *headerView = [collectionView dequeueReusableSupplementaryVie ...

  2. (18) python 爬虫实战

    一切从最简单开始 峰绘网 :http://www.ifenghui.com/ 一个比较好爬的漫画网,之所以选择这个网站,因为查看源代码能直接获得漫画的jpg连接,而且每一话所有的jpg一次性的都展示出 ...

  3. 洛谷 P1031 均分纸牌【交叉模拟】

    题目描述 有 N 堆纸牌,编号分别为 1,2,…, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 ...

  4. bjtu 1846. Infinity的装备[状压dp+dfs/bfs]

    https://citel.bjtu.edu.cn/acm/oj/problem/1846 1846. Infinity的装备 时间限制 1000 ms 内存限制 64 MB 题目描述 “测试服终于下 ...

  5. webpack学习(一)安装和命令行、一次js/css的打包体验及不同版本错误

    一.前言 找了一个视频教程开始学习webpack,跟着视频学习,在自己的实际操作中发现,出现了很多问题.基本上都是因为版本的原因而导致,自己看的视频是基于webpack 1.x版,而自己现在早已是we ...

  6. bzoj 2889: Tree Conundrum

    2889: Tree Conundrum Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 61  Solved: 37[Submit][Status][ ...

  7. Windows 远程桌面文件传输的方法

    实现电脑的远程连接以后,很多时候会需要进行主机间的文件传输,这个时候就可以用系统自带的远程连接里的磁盘映射来完成,详细如下: 远程桌面程序内置了映射磁盘的功能,通过这个功能可以实现远程登录服务器时自动 ...

  8. 卸载django

    首先找到django安装路径 Python import sys; sys.path = sys.path[1:]; import django; print(django.__path__) 得到 ...

  9. 【Java编程】JDBC注入攻击-Statement 与 PreparedStatement

    在上一篇[Java编程]建立一个简单的JDBC连接-Drivers, Connection, Statement and PreparedStatement我们介绍了怎样使用JDBC驱动建立一个简单的 ...

  10. MySQL开发36条军规

    转载地址:http://blog.itpub.net/22664653/viewspace-723506/ 写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒过 ...