python私有化,import,封装,继承,多态

面向对象编程三大特征:封装、继承、多态的核心原理与实践 面向对象编程是一种通过类和对象来组织代码的编程范式,其核心在于模拟现实世界,将数据与操作数据的方法封装成独立单元。这一范式通过封装实现信息隐藏,保护内部状态,提升代码安全性;通过继承建立类之间的层次关系,实现代码复用和逻辑扩展;通过多态允许同一接口在不同对象上呈现不同行为,实现接口统一与系统解耦。这些特征共同构成了现代软件工程的基础,是构建复杂、可维护、可扩展系统的关键技术手段,广泛应用于软件开发、框架设计及系统架构中。理解封装、继承和多态,是掌握Python面向对象、Java面向对象等热门技术,并进一步学 阅读详情

 

 

封装就是拿面向过程的全局变量和函数搞成面向对象中类的属性和方法。

继承:减少代码重复量。减少代码的冗余。

多态就是一个子类继承了父类。但是每一个子类中都可以改写父类的方法。比如A子类改写了父类的C方法,B子类也改写了父类的C方法。那么再把改了父类C方法的子类传到H类中,在H类中调用这两个子类的C方法得到的结果就会不一样。但是调用父类其他方法还是得到的结果还是一样的。多态概括起来就是一个函数有多种形态,如上面说的父类的C方法。可以是A子类的C方法

也可以是B子类的C方法,也可以是它自己的C方法。这样一个方法在不同的情况下就有多种形态了。

 

python里面没有重载,只有重写。重载的意思是调用的函数名一样,但是传的实参不一样,得到的结果也会不一样。

python里面不允许函数重名,所以没有重载。但是可以对父类的函数进行重写。

 

#_author:'DJS'
#date:2018-12-10
#import xxx  然后用xxx里面的方法,xxx.sss,xxx.sss=[x,c,d] 可以在当前文件和xxx模块里面改变sss的值(自己写的模块或者.py文件)
#from xxx import sss   然后用xxx里面的方法,sss=[x,c,d],这样的话只能改变当前文件sss变量的值
#改变不了xxx模块里面sss的值 ssss是一个列表。sss.append()那么可以往模块里面添加值

import sys
from imp import reload
reload(sys)#表示的是重新加载模块,导入模块的时候有时候导入不进来就重新加载。
#可以实时加载模块里面修改的代码,必须import xxx这种方式导入的才可以用,from那种不可以。先导入再加载
print(sys.path) #查看导入模块的先后路径

class huwei():
    #huuwei操作系统
    def __init__(self,name):
        self.name = name
        self.apps = []  #安装的应用程序的名称列表

    def __str__(self): #魔法方法,魔法方法都是实例化对象就会自动执行的
        return "%s 安装软件列表为 %s" %(self.name,str(self.apps))

    def install_app(self,app):
        #判断是否安装了软件
        if app.name in self.apps:
            print("已经安装了%s无需再次安装"% app.name) #__str__打印类的时候就会出来
        else:
            app.install()
            self.apps.append(app.name)

class App():
    def __init__(self,name,version,desc):
        self.name = name
        self.version = version
        self.desc = desc

    def __str__(self):
        return "%s 的版本是 %s-%s" %(self.name,self.version,self.desc)

    def install(self): #多态主要体现在这里,重写父类的install方法
        print("将 %s [%s] 的执行程序复制到软件目录..." %(self.name,self.version))

class Pycharm(App):
    pass

class Chrome(App):
    def install(self):
        print("正在解压安装程序...")
        super().install()

czxt = huwei("华为操作系统")
# print(czxt)
pycharm = Pycharm("PyCharm","1.0","python 开发的IDE环境")
chrome = Chrome("Chrome","70.0","谷歌浏览器")

czxt.install_app(pycharm) #调用czxt里面的install_app方法再传入参数,类中那些魔法方法会自动执行。
##传参的时候如果是个实例化对象,则是先执行实例化对象里面的方法,在执行被传参的函数。
czxt.install_app(chrome)
czxt.install_app(chrome)

print(czxt)

## 参数,*args,*kwargs ,python中有*的表示python解析器会特殊对待对待

def tests(a,b,*args,**kwargs): #,*args,*kwargs
    print(a)
    print(b)
    print(args)
    print(kwargs)
tests(22,33,44,66,77)

##property属性

class Good():

    @property
    def size(self): #这里面只能传递一个参数,多的话就会报错
        return 100

ret = Good()
ret = ret.size#调用属性  #property的目的是让代码的可读性更高,这里可以直接看做为调用一个属性
#而不是一个方法的返回值
print(ret)

class Good():
    #python3默认继承object类,所以在python3中有xx@setter xx@deleter
    @property
    def price(self): #设置方法
        print('@property')

    @price.setter #获取方法
    def price(self,value):
        print("@price.setter")

    @price.deleter #删除方法
    def price(self):
        print("@price.deleter")

print(help(property)) #help能查看一个对象接收多少个参数






 

 

 

 

 

 

 

 

 

 

 

 

 

Python实现封装打包自己写的代码,被python import 1.新建一个文件夹example,里面放入要打包的.py文件,以及必需的_init_.py. 代码如下: # -*- coding: utf-8 -*- """ Created on Thu Nov 1 17:04:02 2018 @author: Jo """ #!/usr/bin/env python #-*- coding:utf-8 -*- def run(): print ('This is a run package!') if __name__ == '__main__': run() 内部代码无需修改。 2.与文件夹同目录放入必需的setup.py文件。 代码如下 立即下载

相关推荐

深入解析经典蓝牙连接:从HCI命令到LMP协议的完整流程

本文深入解析经典蓝牙连接的完整流程,从设备发现、寻呼建立物理链路,到安全配对与加密的每一步。通过对照HCI LOG与AIR LOG,详细拆解了HCI命令与LMP协议报文的对应关系,帮助开发者精准定位连接问题,掌握蓝牙调试的核心方法。

weixin_29260291的博客 457

python私有化、import、封装

私有化 xx: 公有变量 _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问(避免与其他模块命名冲突等场景) __xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到) __xx__:双前后下划线,用户名字空间的魔法对象或属性。例如:init , __ 不要自己发明这样的名字 xx_:单后置下划...

qq_42078231的博客 706

【scp】Windows 下scp报错 bad permissions

Windows 下使用 SSH 连接报 Bad owner or permissions on C:\\Users\\Administrator/.ssh/config 错误问题解决 C:\Users\Administrator>scp -P 66666 D:\1111.pdf zzd@58.213.45.xx:/home/zzd/ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING:...

走在搬砖的路上! 4154

python import 类 继承_python学习之类的继承

面向对象中一个重要的特性就是继承,继承的好处就是提高代码的重用率,减少不必要的代码。继承是父类与子类的关系,当子类继承了父类后,就具有了父类的所有变量和方法。在python中定义继承的语法是:class派生类名(基类名)。在使用python的继承时需要注意一下几点:(1)当父类定义了__init__()初始化方法时,子类不会自动调用,而需要我们显示调用,如果我们要扩展父类的变量,可以在__ini...

weixin_39598094的博客 306

深入解析高通8155平台音频数据流:从HAL到DSP的完整链路

本文深入解析了高通8155平台音频数据从安卓HAL层到DSP的完整传输链路。以播放场景为例,详细阐述了音频数据如何通过ASoC DPCM框架进行路由、打包,并经由APR协议与DSP交互,最终驱动硬件发声的核心流程,为车载音频系统开发与调试提供了清晰的框架。

rust6ferris的博客 1176

QT触摸屏开发:如何通过重写事件处理实现精准按键长按检测

本文针对QT触摸屏开发中按键长按检测不精准的常见问题,深入剖析了传统信号机制失效的原因,并提供了通过重写事件处理函数(event)的解决方案。文章详细介绍了创建自定义TouchButton类、直接处理QTouchEvent以实现可靠长按检测的完整步骤与代码示例,并分享了进阶优化与避坑指南,帮助开发者实现跨平台一致的精准交互。

weixin_29207149的博客 95

python import 类 继承_python:类的继承

今天是阅读同事写的代码的时候,看到在实现中他使用了类的继承的方式,想起来还没有编写过python中类的继承。阅读了一些文章,文章参考:https://www.cnblogs.com/bigberg/p/7182741.html稍微写了一点儿程序操作下:from enum import IntEnumclass DeviceType(IntEnum):UNKNOWN = 0EARBUD = 1CAS...

weixin_28728031的博客 410

hMailServer安装配置

hMailServer安装配置 使用宝塔面板上的宝塔邮件服务器2.1版本,进行安装hMailServer。 宝塔在安装hMailServer是有做了一些配置,如果是手工安装需要注意一下配置点: 1、\hMailServer\Bin 目录下增加mysql连接文件libmysql.dll,要去下载32位的。 libmysql.dll下载 链接:https://pan.baidu.com/s/1YGJXzjowlJ9n_MiqB4xiqw 提取码:wz90 2、 需要提前安装mysql,并创建hM.

王者的博客 5868

Python3 类继承 导入类

参考文件:《Python编程:从入门到实践》 Car类,Car.py文件#!/usr/local/python3.6.1/bin/python3 class Car(): """一次模拟汽车的简单尝试""" odometer_reading = 0 def __init__(self, make, model, year): """初始化描述汽车

飞蛾逐月 5138

深度强化学习在足式机器人中的应用 (一):基础原理与仿真环境

我们将首先深入探讨其背后的核心挑战与技术栈,然后详细推导机器人学和强化学习的基本数学原理,特别是剖析在机器人控制领域表现卓越的PPO算法。下面的独立Python脚本展示了Isaac Gym的基本API用法,加载一个Go1机器人(假设URDF已准备好),并让它执行一个简单的预设动作(正弦波运动),以此来熟悉仿真流程。:代码的核心是直接操作GPU上的PyTorch张量,避免了CPU和GPU之间的数据拷贝,这是实现高性能的关键。:所有计算(如伪策略中的正弦波计算)都应该是向量化的,一次性为所有。

VectorShift的博客 228

手把手教你写上位机软件(c#、winform)

上位机软件模板

qq_34059233的博客 7万+

python私有化,import,封装继承多态

1、说明: xx:共有变量 _x:单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问 __xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到 __xx__: ...

weixin_42137701的博客 361

SAP S/4HANA Cloud 管理员业务角色创建实战:基于 SAP_BR_ADMINISTRATOR 模板的一站式指南

摘要:SAP S/4HANA Cloud新系统初始登录时常见Fiori Launchpad无磁贴的问题,这是由于缺乏合适的业务角色分配。本文介绍了通过预交付的SAP_BR_ADMINISTRATOR模板创建管理员角色的完整流程,包括业务用户、业务角色和业务目录的核心概念解析。重点说明了直接使用模板的风险,并提供了从模板创建自定义管理员角色的详细步骤(4.1-4.3),以及权限限制设置的注意事项。文中还分享了一个实际项目案例,强调正确配置管理员角色对后续权限体系建设的关键作用。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 205

Python 私有化、import、封装继承多态

私有化 默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似JAVA、C++中public,private等关键词来修饰成员函数和成员变量。 在python中定义私有变量只需要在变量名或函数名前加上双前置下划线 ” __ “ ,那么这个函数或变量就是私有的了。 x :公有变量 _x :单前置下划线,私有化属性或方...

Au 544

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python继承语法_Python高级语法2:私有化、import、封装继承多态

一、私有化xx : 公有变量_x :单前置下划线,私有化属性或方法,from somemodule import * 禁止导入,类对象和子类可以访问__xx: 双前置下划线,避免与子类中的属性命名冲突,无法外部直接访问(名字重整所以访问不到)__xx__: 双前后下划线,用户名字空间的魔法对象或属性。例如: __init__,__不要自己发明这样的名字xx_: 单后置下划线,用于避免与 Pytho...

weixin_39768695的博客 187

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【python进阶 高级语法 笔记】GIL、深/浅拷贝、私有化、import、封装 继承 多态 等

【python高级基础 笔记】GIL、深/浅拷贝、MRO、property属性、上下文管理器等 目录 1.GIL(全局解释器锁) 2.深拷贝、浅拷贝 2.1.浅拷贝 2.2.深拷贝 2.3.拷贝的其他方式 3.私有化 4.import导入模块 5.封装、继承、多态 5.1.封装 5.2.继承 5.2.1.单继承 5.2.2多继承与 MRO 5.3....

在下能猫 的博客 540

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

python后端学习(九)GIL、深/浅拷贝、私有化、import、封装继承多态

GIL面试题 描述Python GIL的概念, 以及它对python多线程的影响?编写一个多线程抓取网页的程序,并阐明多线程抓取程序是否可比单线程性能有提升,并解释原因。 Guido的声明:http://www.artima.com/forums/flat.jsp?forum=106&thread=214235 he language doesn’t require the GIL – it’s only the CPython virtual machine that has historical

行者 231

Python高级用法 #GIL #拷贝 #私有化 #MRO #类 #实例对象 #with与上下文管理器

Python高端一、全局解释器锁GIL1.1查看资源占用1.2单线程死循环1.3多线程死循环1.4多进程死循环1.5GIL全局解释器锁1.6解决GIL 一、全局解释器锁GIL GIL全局解释器锁 1.1查看资源占用 输入htop 1.2单线程死循环 请用虚拟机运行 while True: pass 会发现一个核占满了 再在另一个终端里,运行同一个文件,会发现。两个核都...

七海的博客 1136

05_python提高

目录1_Gil01_单线程死循环02_两个线程死循环03_两个进程死循环04_main05_python可以调用c语言的处理过程2_私有化.import.封装继承多态3_方法解析顺序表MRO4_类对象和实例对象访问属性的区别和property05_私有属性和名字重整,魔法属性和方法,上下文管理器 1_Gil 01_单线程死循环 # 主线程死循环,占满cpu while True: pass...

m0_44967199的博客 352

个人笔记——Python高级语法

Python高级语法GIL(全局解释器锁)GIL避免GIL的方法常见面试题深拷贝和浅拷贝浅拷贝深拷贝 GIL(全局解释器锁) GIL 例1:单线程死循环 while True: pass 会占用满单核cpu 例2:双线程死循环 import threading # 子线程死循环 def test(): while True: pass t1 = threading.Thread(t...

小菜鸡的博客 337

python提高——类(私有化,封装、继承、多态)

目录1私有化2import导入import搜索路径3封装4继承5多态 1私有化 xx: 公有变量 x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问 __ xx :双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到) __ xx_:双前后下划线,用户名字空间的魔法对象或属性。例如:__ init__ , __ 不要自己发明这样的名字 xx_:单后置下划线,用于避免与Python关键词的冲突 2import导入

小屋 310

python提高

1.GIL pass 占位符,空语句 全局解释器锁,保证同一时刻只有一个线程在执行,是解释器cpython的历史原因 GIL和python语言本身没有任何关系 IO密集形 :使用于多线程,协程 计算密集形 :使用于进程 用c语言解决GIL问题,在python中嵌入c:编译c为一个动态库 python加载库,再调用里面的函数 python里面调用c,java,等等所有其他语言都可以 2.深拷贝,浅拷...

JessePinkmen的博客 220

私有化、import、封装、继承、多态

私有化 xx: 公有变量 _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问 __xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到),子类不继承,子类不能访问,如果在子类中向__xx名字赋值,那么会在子类中定义的一个与父类相同名字的属性 xx:双前后下划线,用户名字空间的魔法对象或属性。例...

笔记 323

Python学习--Day 22

Python学习--Day 22163.python多继承与搜索顺序164.多态 视频来源:python视频 900集 163.python多继承与搜索顺序 164.多态

qinshimingyue27的博客 197

21天挑战学习-Day13私有属性、封装继承多态

拆包、MRO、import导入

weixin_63204687的博客 306
上一篇: python多进程,多线程,协程
下一篇: python中深拷贝,浅拷贝
djs123DJS
博客等级 码龄9年 49粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值