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

python类的伪私有属性__X

1 python类的伪私有属性__X

python类的伪私有属性,是为了避免实例内的命名空间冲突。

1.1 变量名压缩__X

(1)描述:python的class语句内,开头有两个下划线,但结尾没有两个下划线的变量名,会自动在原始变量名开头加上单下划线和类名。

(2)用途:这样可以避免与同一层次中其它类创建的相同变量名项冲突。

(3)例子:比如,

MyClass类的变量名__X,会自动变成_MyClass__X。

OthClass类的变量名__X,会自动变成_OthClass__X。

(4)场景:

如果类有可能要作为基类,且类内变量可能和其他类同名,此时,变量要双下划线开头。

比如,多重继承类(一个类同时继承多个基类)。

1.2 变量名压缩示例

未使用__X

没有使用双下划线开头变量,同名变量被覆盖。

>>> class C1:
    def m1(self):self.X=8
    def m2(self):print(self.X)
>>> class C2:
    def m5(self):self.X='梯阅线条'
    def m6(self):print(self.X)
>>> class C3(C1,C2):pass
>>> I=C3()
>>> I.m1();I.m5()
>>> I.m2()
梯阅线条
#没有使用双下划线,同名变量被覆盖
>>> I.__dict__
{'X': '梯阅线条'}

有使用__X

使用双下化下开头变量,同名变量相互独立。

>>> class C1:
    def m1(self):self.__X=8
    def m2(self):print(self.__X)
>>> class C2:
    def m5(self):self.__X='梯阅线条'
    def m6(self):print(self.__X)
>>> class C3(C1,C2):pass
>>> I=C3()
>>> I.m1();I.m5()
>>> I.m2()
8
#__X自动扩张为_C1__X 和 _C2__X
>>> I.__dict__
{'_C1__X': 8, '_C2__X': '梯阅线条'}

http://www.kler.cn/a/145044.html

相关文章:

  • 网站结构优化:加速搜索引擎收录的关键
  • three.js+WebGL踩坑经验合集(4.1):THREE.Line2的射线检测问题(注意本篇说的是Line2,同样也不是阈值方面的问题)
  • 51单片机CLD1602显示万年历+闹钟+农历+整点报时
  • 具身智能体空间感知基础!ROBOSPATIAL:评测并增强2D和3D视觉语言模型空间理解水平
  • SpringBoot+Vue的理解(含axios/ajax)-前后端交互前端篇
  • Github 2025-01-25Rust开源项目日报Top10
  • 腾讯云发布新一代基于AMD处理器的星星海云服务器实例SA5
  • hdlbits系列verilog解答(exams/m2014_q4g)-48
  • AJAX技术-04-- 跨域说明
  • CodeTON Round 7(D、E)
  • 基于51单片机音乐盒设计( proteus仿真+程序+原理图+PCB+报告+讲解视频)
  • 基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(八)
  • Flutter与Android的混合跳转和通信
  • rk3588配置uac功能,android13使能uac及adb的复合设备
  • 来自Microsoft Teams的摄像头背景图片
  • 单例模式与多线程
  • python opencv 放射变换和图像缩放-实现图像平移旋转缩放
  • 开卷翻到毒蘑菇?浅谈大模型检索增强(RAG)的鲁棒性
  • 抖音权重查询源码H5源码
  • C++基础从0到1入门编程(四)类和对象
  • Python-Django的“日志功能-日志模块(logging模块)-日志输出”的功能详解
  • Guitar Pro8.0.2吉他编曲软件 吉他打谱软件 吉他作曲软件
  • UEditor编辑器实现上传图片自动加水印功能PHP源码
  • 【C++初阶】四、类和对象(构造函数、析构函数、拷贝构造函数、赋值运算符重载函数)
  • 《向量数据库指南》——向量数据库Milvus Cloud搭建Excel公式编辑器助手
  • 柑橘病害数据集(四类图像分类,没有打yolo标签)