python继承多重继承

一,基本语法

class MyClass(BaseClass):def __init__(self):print('...')
class MyDefineClass(object):def __init__(self):print('继承自object类')MyDefineClass.__init__(None)
# 属性访问 me = MyDefineClass()
# 实例对象'''
继承自object类
继承自object类
'''

二,父类在其它模块

class MyClass(ModuleName.BaseClass):def __init__(self):print('...')
  • 相同目录下的Father模块的father类

在这里插入图片描述

# father模块
class father(object):var = 99def __init__(self):print('父类构造函数。')def raise_son(self):print('我要养育我的孩子。')def show(self):print('i am your dad~')
  • Extend模块
from Father import fatherclass Child1(father):def __init__(self):print("继承father模块的Father类")def show(self):print('i am your son~')def test_child1():ch = Child1()ch.raise_son() # 拥有父类的非私有方法ch.show() # 拥有父类的方法, 被重写后就是自己的方法啦。print(ch.var) # 拥有父类的属性test_child1()
'''
继承father模块的Father类
我要养育我的孩子。
i am your son~
99
'''
  • 单继承

extend模块

class people:# 基本属性name = ''age = ''count = 0 # 类变量# 私有属性,类的外部无法访问__height = 0def __init__(self, name, age, height):self.name = nameself.age = ageself.__height = heightpeople.count += 1print(self.__height)def show(self):print(f'I am {self.name}, age {self.age}, height {self.__height}', people.count)def test_people():p = people('jack', 13, 170)p.show()p1 = people('rose', 17, 176)p1.show()

father模块

# 单继承调用父类的构造函数
from Father import people
class student(people):grade = ''def __init__(self, name, age, height, grade):# 掉用父类的__init__函数people.__init__(self, name, age, height)self.grade = grade# 覆写父类的方法def show(self):print(f'I am {self.name}, age {self.age} and in {self.grade}')def test_stu():s = student('rye', 19, 168, 'colleage three')s.show()
# test_stu()'''
168 # people类里面的身高
I am rye, age 19 and in colleage three
'''

三,python 多继承

  • 可以继承多个类
class MyClass(base1, base2, base3):def __init__(self):print('...')
  • 调用父类方法优先搜索左边的类(下面有demo)
# 一个父类
class speaker():topic = ''name = ''def __init__(self, topic, name):self.topic = topicself.name = namedef show(self):print(f'I am a speecher, name {self.name}, my topic is {self.topic}')# sample 继承speaker 和 student,见上面的student
class sample(speaker, student): # speaker的方法优先def __init__(self, topic, name, age, height, grade):speaker.__init__(self, topic, name) student.__init__(self, name, age, height, grade)def test_sample():T = sample('python', 'jack', 25, 180, 10)T.show() # 多重继承里面方法调用优先级是括号左边的父类# test_sample()
'''
180 people中打印的身高
I am a speecher, name jack, my topic is python
'''
  • 尽量不要用多重继承!!!

  • 只会降低性能,一个个的找父类的方法

  • 还会把代码搞复杂

四,方法重写

  • super(type, self) type 子类 self是子类的实例;如果在类里面使用 直接super()
# 重写
class parent:def say(self):print('调用父类方法')class child(parent):def say(self):print('调用子类方法')def test_overwirte():c = child()c.say() # 子类实例使用父类方法super(child, c).say() # 子类调用父类覆盖的方法# test_overwirte()
'''
调用子类方法
调用父类方法
'''

五,私有属性

  • 类的私有属性
    私有属性
    self.__attribute, 只能在本身类使用
    私有方法
    self.__method_name, 只能在本来使用

  • 私有属性

# 私有属性
class MyCounter():__private_count = 0public_count = 0def count(self):self.__private_count += 1self.public_count += 1print('私有变量 ', self.__private_count)def test_count():x = MyCounter()x.count()x.count()print('public 变量', x.public_count)# print(x.__private_count) 私有变量不能访问
'''
私有变量  1
私有变量  2
public 变量 2
'''
  • 私有方法
class website:def __init__(self, name, url):self.name = nameself.__url = urldef show(self):print('name ', self.name)print('url ', self.__url)def __func(self):print('这是私有方法')def func(self):self.__func() # 私有方法只能本类调用print('这是共有方法')def test_site():w = website('csdn', 'csdn.net')w.func()w.show()# w.__func() # AttributeError: 'website' object has no attribute '__func' test_site()
'''
这是私有方法
这是共有方法
name  csdn
url  csdn.net
'''

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows XP系统安装SQL Server 2005(开发版)图解

转自Windows XP系统安装SQL Server 2005(开发版)图解 安装前提:由于有些从网上的下载的项目需要导入SQL Server 2005的数据文件,因此,今天便安装了这个数据库,我的系统中已经安装了SQL Server2000所以是在它之上安装SQL Server2005的。 一、数…

用turtle画各种各样的数学图形

ps,用turtle导入小海龟来画图。画图代码都要导入海龟库哦,见下面第一行。 import turtle as t直线 # 画直线 def draw_line():pen t.Pen()pen.fd(200) # 直线默认水平方向 draw_line() 画正方形 def draw_square():pen t.Pen()for i in range(4): …

实验3 系统调用

系统调用 实验目的 建立对系统调用接口的深入认识掌握系统调用的基本过程能完成系统调用的全面控制为后续实验做准备 实验内容 此次实验的基本内容是:在Linux 0.11上添加两个系统调用,并编写两个简单的应用程序测试它们。 iam() 第一个系统调用是iam()&a…

python标准库(一)

操作系统接口os 切换目录 >>> import os>>> os.getcwd() # 得到当前工作目录C:\\Users>>> os.chdir(F:\\) # 切换工作目录到F盘>>> os.system(mkdir tody) # 在f盘创建一个叫tody的文件夹0import os 与 from os import * ,要…

python标准库(二)

格式化输出 reprlib 库用来格式化 >>> import reprlib >>> reprlib.repr(set(aabbccddeeeff)) "{a, b, c, d, e, f}" >>>对集合能排序 >>> reprlib.repr(set(fdajfejaa)) "{a, d, e, f, j}" >>>pprint库用…

实验4 进程运行轨迹的跟踪与统计

进程运行轨迹的跟踪与统计 难度系数:★★★☆☆ 实验目的 掌握Linux下的多进程编程技术;通过对进程运行轨迹的跟踪来形象化进程的概念;在进程运行轨迹跟踪的基础上进行相应的数据统计,从而能对进程调度算法进行实际的量化评价&…

虚拟环境创建,pip管理包

windows10虚拟环境的创建,pip管理包1.虚拟环境的创建1.1 为什么要创建虚拟环境1.2 创建虚拟环境1.3 激活虚拟环境1.3.1 激活方式1.3.2 检查是否创建成功2.用pip管理包2.1 pip的基本使用2.2 pip创建安装的文件requirements.txt2.3 安装包对应的版本2.4 用pip - r ins…

vi文字处理器

http://blog.csdn.net/wangloveall/article/details/22649331 摘要:vi是类UNIX命令行接口的标准文字处理软件,也是进行shell脚本程序编写与服务器设置的非常重要的工具。本文介绍vi文字处理器,包括vi简介、vi怎么使用、vi的加强版vim。 关键词…

用numpy,matplotlib库画笛卡尔爱心曲线

1650年,斯德哥尔摩的街头,52岁的笛卡尔邂逅了18岁的瑞典公主克里斯汀。   那时,落魄、一文不名的笛卡尔过着乞讨的生活,全部的财产只有身上穿的破破烂烂的衣服和随身所带的几本数学书籍。生性清高的笛卡尔从来不开口请求路人施舍…

centos7虚拟机共享本机磁盘的方法

说明:这个方法不一定是通用的,也可能不是最快捷的,但是感觉比较稳妥的办法。 1,首先坚持两个进程是否启动:右击:我的电脑-管理-服务,检查server服务和Workstation服务是否启动。如果没有启动&a…

服务器小程序servlet的使用

servlet的创建使用一,三种创建方式1.1 实现servlet接口1.2 继承GenericServlet1.3 继承HttpServlet二,servlet使用2.1 web.xml文件的配置2.1.1 创建xml文件2.1.2 手写web.xml文件2.2 在8080端口下访问2.2.1 servlet的生命周期servlet是服务器小程序。是个…

el表达式,c标签的使用

el表达式的使用 学生类 public class Student {int id;String name;String sex;String birth;public Student() {}public Student(int id, String name, String sex, String birth) {super();this.id id;this.name name;this.sex sex;this.birth birth;}// el 表达式取实…

conda虚拟环境中安装ipython

问题:今天安装了tensorflow,启动ipython竟然提示如下: In [1]: import tensorflow as tf --------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recen…

使用session保持登录状态,cookie保存用户账号密码

session保存登录状态与cookie保存账号密码1. session维持登录状态1.1 代码实现2. cookie保存账号密码2.1 什么是cookie2.2 cookie记住账号密码1. session维持登录状态 利用session的生命周期实现 1.1 代码实现 login页面表单部分 <form action"judgeLoginSession&qu…

js表单验证,给出友好的提示

js验证表单 注意&#xff1a; 只做非空验证, 只是个小demo学习思想&#xff0c;onblur onfocus onsubmit的使用&#xff0c;给出友好提示网上有很多有良好&#xff0c;强大的控件&#xff0c;用于用户输入 代码实现 js代码 <script>function check_form(form) {// 得到f…

注册demo,使用jQuery异步验证账号是否存在

功能 jQuery验证账号是否存在form表单提交判断&#xff0c;失焦判断 界面 Ajax代码&#xff0c;验证用户rye1是否存在 function check_UserId() {$userId $("#userId").val();$.post("checkUserId","userId" $userId,function (result) { // 异…

虚拟机的网络连接模式

本文参考文章如下&#xff0c;感谢原作者&#xff1a; 《虚拟机的桥接模式和NAT模式》 https://blog.csdn.net/qq_40198004/article/details/89785806 1、桥接模式 桥接模式:直接连接物理网络&#xff0c;也就是连的你交换机的网络和你主机的IP在一个网段上&#xff0c;将虚拟…