当前位置: 首页 > news >正文

Python保护类内部私有变量,不允许外部类访问的一种简单实现

1. 背景:

在项目中被人偷了私有变量,每次项目升级都会导致使用私有变量的功能模块出问题。
Python语言中不存在像Java那样的访问修饰符,只能另辟蹊径。

2. 应用场景:

适用于项目中约束违反框架规则,自行发挥,但屡教不改的所有人!

3. 实现功能

保护类中的私有变量,让外部类无法调用类内部的私有变量!非当前类调用时抛出异常,让外部类无法正常使用受保护的私有变量!

4. 代码部分

importinspectclassProtectedClass:# 受保护的私有变量_instances={}_connection_pools={}_stats={}def__getattribute__(self,name):# 拿到调用着caller_frame=inspect.currentframe().f_back caller_class=Noneifcaller_frame:# 1. 先获取调用者的 self 对象(不触发自定义 __getattribute__)caller_self=caller_frame.f_locals.get('self',None)ifcaller_selfisnotNone:# 2. 用 object 基类的 __getattribute__ 读取 __class__,绕过自定义逻辑caller_class=object.__getattribute__(caller_self,'__class__')""" 受保护的私有变量名称,这里可以自己根据保护需求自行更改,比如:单双下划线开头的所有变量,我这里只保护下面三个私有变量。 保证不被当前类以外的调用 注意:不要把private_vars放到外部 """private_vars=['_connection_pools','_stats','_instances']# 校验私有变量访问范围""" name in private_vars: 确认调用的属性是私有变量 caller_class != ProtectedClass: 确认调用类不是当前类(也可以做成白名单访问) 满足上面两个条件时,抛出异常! ↓↓↓ 这里的判断逻辑,可以自行发挥!!! """ifnameinprivate_varsandcaller_class!=ProtectedClass:raiseAttributeError(f"Private variables are not allowed to be accessed.")returnsuper().__getattribute__(name)
http://www.jsqmd.com/news/461713/

相关文章:

  • 口碑好的多肽修饰厂家2026年排行榜,哪家服务更贴心 - 工业推荐榜
  • OpenClaw本地私有化部署教程
  • 进口阀门市场发展趋势与工业应用解析
  • 矩阵论考题——答案
  • 和信通卡回收折扣对比2026,畅回收平台折脱颖而出 - 畅回收小程序
  • PbootCMS附件上传报错UNKNOW: Code: 8192; Desc: stripos()
  • 收藏!小白程序员必看:手把手教你玩转大模型上下文工程,提升代理智能
  • 亚马逊合规趋严,海外仓如何破解物流卡点,实现高效履约?
  • 2026年金华地区好用的日语高考培训学校排名 - mypinpai
  • docker安装nacos
  • 【金蝶云星空】如何给科目挂上核算维度
  • 本地ubuntu服务器上部署openclaw完整教程(详细图文)
  • 苏州小区停车场道闸系统推荐:智慧停车系统怎么选? - 品牌观察员小捷
  • 2026年全国气流粉碎机哪家好?实力筑牢精度与服务壁垒 一站式解决方案适配各类场景 - 深度智识库
  • 2026.03.10学习记录(游戏)
  • 【量化工具推荐】2026年国内期货量化软件年度排行
  • 2026年靠谱的全屋净水系统品牌推荐:全屋净水安装/全屋净水过滤系统优质供应商推荐参考 - 行业平台推荐
  • 2026年热门的塑料管夹厂家推荐:铝合金管夹/不锈钢管夹/轻型塑料管夹厂家实力与用户口碑参考 - 行业平台推荐
  • 抗老眼霜怎么选?2026抗皱淡黑消肿TOP5,成分效果性价比拉满 - 速递信息
  • 2026最强AI论文生成工具Top5_multimodal+global thought chain
  • 成都艺术涂料品牌品质商家
  • 瑞祥商联卡回收避坑全指南!安全高效兑现看这篇就够了 - 团团收购物卡回收
  • 数据结构(二)队列和栈
  • 打开网站显示“未检测到您服务器环境的sqlite3数据库扩展…”错误怎么办|已解决
  • 2026年聚氨酯灌封胶厂家深度选型指南:不同需求下的匹配方案 - 速递信息
  • 支付宝红包套装回收避坑指南:3 个套路要避开,正确回收姿势看这里 - 团团收购物卡回收
  • PBOOTCMS网站程序提示“执行SQL发生错误!错误:DISK I/O ERROR”
  • 系统认识栈和队列
  • 2026年江苏盐城最新原料药/医药中间体/橡胶助剂供应商权威推荐榜:高品质原料药/医药中间体/橡胶助剂供应商推荐,助力制药与化工企业降本增效 - 速递信息
  • 高并发分布式系统