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

本文介绍了Python中的私有化、模块导入机制以及面向对象的封装、继承和多态概念。私有化通过单、双下划线实现不同级别的保护。在import模块时,涉及搜索路径、重新导入和多模块开发注意事项。封装提高了代码的可读性和数据安全性,继承提升代码复用,多态则实现了不同对象对同一消息的响应。
摘要由CSDN通过智能技术生成

1、私有化:

  • xx:共有变量
  • _x:单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问
  • __xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到
  • __xx__:双前后下划线,用户名字空间的魔法对象或属性。例如:__init__,__不要自己发明这样的名字
  • xx_:单后置下划线,用于避免与Python关键字的冲突
    通过name mangling(名字重整(目的是以防止子类意外重写基类的方法或属性)如:_Class__object)机制就可以访问private了

2、import导入模块

(1)import搜索路径

在这里插入图片描述

路径搜索
  • 从上面列出的目录一次查找要导入的模块文件
  • ‘’表示当前路径
  • 列表中的路径的先后顺序代表了python解释器在搜索模块时的先后顺序
程序执行时添加新的模块路径

在这里插入图片描述

(2)重新导入模块

模块被导入后,import module 不能重新导入模块,重新导入需要用reload
在这里插入图片描述

(3)多模块开发的注意点
①实例:

这里我们使用4个.py文件来说明这个问题。
1、common.py

RECV_DATA_LIST = list()  # 用来存储数据
HANDLE_FLAG = False  # 用来标记是否完成

2、handle_msg.py

from common import RECV_DATA_LIST
import common


def handle_data():
   """模拟处理recv_msg模块接受的数据"""
   print("----handle_data----")
   for i in RECV_DATA_LIST:
       print(i)

   # 既然处理完成了,那么将变量HANDLE_FLAG设置为True,意味着处理完成
   common.HANDLE_FLAG = True


def test_handle_data():
   """测试处理是否完成,变量是否设置为True"""
   print("---->test_handle_data")
   if common.HANDLE_FLAG:
       print("====已经处理完成====")
   else:
       print("====未处理完成====")

3、recv_msg.py

from common import RECV_DATA_LIST
import common


def recv_msg():
   """模拟接收到的数据,然后添加到common的列表中"""
   print("---->recv msg")
   for i in range(5):
       RECV_DATA_LIST.append(</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值