Python中的单继承与多继承实例分析

本文实例讲述了Python中的单继承与多继承。分享给大家供大家参考,具体如下:

单继承

一、介绍

Python
同样支持类的继承,如果一种语言不支持继承,类就没有什么意义。派生类的定义如下所示:

class DerivedClassName(BaseClassName1):

.

.

.

需要注意圆括号中基类的顺序,若是基类中有相同的方法名,而在子类使用时未指定,python从左至右搜索
即方法在子类中未找到时,从左到右查找基类中是否包含方法。

BaseClassName(示例中的基类名)必须与派生类定义在一个作用域内。

除了类,还可以用表达式,基类定义在另一个模块中时这一点非常有用:

class DerivedClassName(modname.BaseClassName):

二、代码

# -*- coding:utf-8 -*-

#! python3

class people:

#定义基本属性

name =''

age =0

#定义私有属性,私有属性在类外部无法直接进行访问

__weight =0

#定义构造方法

def __init__(self,n,a,w):

self.name =
n

self.age =
a

self.__weight = w

def speak(self):

print("%s 说:
我 %d 岁。"%(self.name,self.age))

#单继承示例

class student(people):

grade =''

def __init__(self,n,a,w,g):

#调用父类的构造函数,下面两种方式都可以

#people.__init__(self,n,a,w)

super().__init__(n,a,w)

self.grade =
g

#覆写父类的方法

def speak(self):

print("%s 说:
我 %d 岁了,我在读 %d
年级"%(self.name,self.age,self.grade))

s = student('ken',10,60,3)

s.speak()

三、运行结果

ken 说: 我 10
岁了,我在读 3 年级

多继承

一、介绍

Python同样有限的支持多继承形式。多继承的类定义形如下例:

class DerivedClassName(Base1, Base2, Base3):

.

.

.

需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索
即方法在子类中未找到时,从左到右查找父类中是否包含方法。

二、代码

# -*- coding:utf-8 -*-

#! python3

#类定义

class people:

#定义基本属性

name =''

age =0

#定义私有属性,私有属性在类外部无法直接进行访问

__weight =0

#定义构造方法

def __init__(self,n,a,w):

self.name =
n

self.age =
a

self.__weight = w

def speak(self):

print("%s 说:
我 %d 岁。"%(self.name,self.age))

#单继承示例

class student(people):

grade =''

def __init__(self,n,a,w,g):

#调用父类的构函

people.__init__(self,n,a,w)

self.grade =
g

#覆写父类的方法

def speak(self):

print("%s 说:
我 %d 岁了,我在读 %d
年级"%(self.name,self.age,self.grade))

#另一个类,多重继承之前的准备

class speaker():

topic =''

name =''

def __init__(self,n,t):

self.name =
n

self.topic =
t

def speak(self):

print("我叫
%s,我是一个演说家,我演讲的主题是 %s"%(self.name,self.topic))

#多重继承

class sample(speaker,student):

a =''

def __init__(self,n,a,w,g,t):

student.__init__(self,n,a,w,g)

speaker.__init__(self,n,t)

test = sample("Tim",25,80,4,"Python")

test.speak()#方法名同,默认调用的是在括号中排前地父类的方法

三、运行结果

我叫
Tim,我是一个演说家,我演讲的主题是 Python

Python中的单继承与多继承实例分析的更多相关文章

  1. python中列表元素连接方法join用法实例

    python中列表元素连接方法join用法实例 这篇文章主要介绍了python中列表元素连接方法join用法,实例分析了Python中join方法的使用技巧,非常具有实用价值,分享给大家供大家参考. ...

  2. Python中的单例设计

    01. 单例设计模式 设计模式 设计模式 是 前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对 某一特定问题 的成熟的解决方案 使用 设计模式 是为了可重用代码.让代码更容易被他人理解.保 ...

  3. Python中的startswith和endswith函数使用实例

    Python中的startswith和endswith函数使用实例 在Python中有两个函数分别是startswith()函数与endswith()函数,功能都十分相似,startswith()函数 ...

  4. python条件变量之生产者与消费者操作实例分析

    python条件变量之生产者与消费者操作实例分析 本文实例讲述了python条件变量之生产者与消费者操作.分享给大家供大家参考,具体如下: 互斥锁是最简单的线程同步机制,面对复杂线程同步问题,Pyth ...

  5. Python中的类、对象、继承

    类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...

  6. python中的单下划线和双下划线意义和作用

    Python中并没有真正意义上的“私有”,类的属性的的可见性取决于属性的名字(这里的属性包括了函数).例如,以单下划线开头的属性(例如_spam),应被当成API中非公有的部分(但是注意,它们仍然可以 ...

  7. 转--python 中写单例

    原文地址 原文地址2 Python中的单例模式的几种实现方式的及优化 阅读目录(Content) 单例模式 实现单例模式的几种方式 1.使用模块 2.使用装饰器 3.使用类 4.基于__new__方法 ...

  8. python中的单引号,双引号,三引号

    转载自: http://blog.csdn.net/wanghai__/article/details/6285310 先说1双引号与3个双引号的区别,双引号所表示的字符串通常要写成一行 如: s1 ...

  9. python中的单例

    使用__new__ 因为一个类每一次实例化的时候,都会走它的__new__方法.所以我们可以使用__new__来控制实例的创建过程,代码如下: class Single: instance = Non ...

随机推荐

  1. 如何决定使用 HashMap 还是 TreeMap?(未完成)

    如何决定使用 HashMap 还是 TreeMap?(未完成)

  2. zencart单独屏蔽左右边栏代码

    1.屏蔽左栏:打开模板目录下的tpl_main_page.php文件,找到以下代码 if (!isset($flag_disable_left) || !$flag_disable_left) { 在 ...

  3. libusb_bulk_transfer 异步同步

    同步方式 libusb_bulk_transfer(devh, ep_bulk, buf, CAM_BUF_SZ, &len, timeout); 进入libusb研究,发现libusb是采用 ...

  4. Vue入门(二)——Demo

    1.在工程目录下创建项目 右键GIT BASH 2.安装lib(建议使用淘宝镜像安装) 3.首页 App.vue <template> <el-container> <e ...

  5. Logstash工作原理

    Logstash事件处理有三个阶段:inputs → filters → outputs.是一个接收,处理,转发日志的工具.支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛 ...

  6. Educational Codeforces Round 50 (Rated for Div. 2) F - Relatively Prime Powers(数学+容斥)

    题目链接:http://codeforces.com/contest/1036/problem/F 题意: 题解:求在[2,n]中,x != a ^ b(b >= 2 即为gcd)的个数,那么实 ...

  7. mysql慢查询配置(5.7)

    刚装了Windows版mysql,想开启慢查询日志. 修改D:\mysql-5.7.23-winx64下my.ini配置文件,添加: [mysqld]slow_query_log = onslow_q ...

  8. @Configuration的使用 和作用(转)

    从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplic ...

  9. Luogu P1951 收费站_NOI导刊2009提高(2) 二分 最短路

    思路:二分+最短路 提交:1次 题解: 二分最后的答案. $ck()$: 对于每次的答案$md$跑$s,t$的最短路,但是不让$c[u]>md$的点去松弛别的边,即保证最短路不经过这个点.最后$ ...

  10. laravel Passport - Dingo/Api v2.0+Passport 实现 api 认证

    第一部分: 安装passport 使⽤ Composer 依赖包管理器安装 Passport : composer require laravel/passport 接下来,将 Passport 的服 ...