Python中类的变量,一个下划线与两个下划线的区别

文章介绍了Python中私有变量的概念,尽管以双下划线开头的变量在外部看起来不可访问,但实际上可以通过特定方式访问。同时,通过示例展示了如何添加实例属性以及这些属性的访问规则。强调了良好的编程习惯,不鼓励直接访问私有变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

形似      功能
__xx这是私有变量, 只有内部可以访问,外部不可以访问。但是也不是一定不可以访问,只要以 _类名__xx样式就可以访问 。但最好不要这样做,养成良好编程习惯
_x这是实例变量,可以访问,但是不要轻易访问。按照约定俗成,当你看到这样的变量时,意思就是,“虽然我可以被访问,但请把我视为私有变量,不要随意访问”。

代码演示

class A:
    def __init__(self):
        self._name = 1
        self.__age = 2


a = A()
print(a.__dict__)   # {'_name': 1, '_A__age': 2}
print(a._name )     # 返回 1。说明一个下划线可以被访问,只是在a.中不会显示。
print(a.__age)      # 语法报错
print(a._A__age)    # 返回 2。说明私有变量在外部并不是完全不能被访问

结合上面代码,问:若使用 a.__gender = "男" 定义一个实例属性,这个实例属性是否私有变量?其他实例对象能否访问?

使用a.gender定义的实例属性属性不是私有变量,这种方式可以看做是为实例对象a增加了一个__gender属性,这个属性只有实例对象a有,其他实例对象没有,所以其他实例对象也访问不了。

class A:
    def __init__(self):
        self._name = 1
        self.__age = 2


a = A()
print(a.__dict__)   # {'_name': 1, '_A__age': 2}
a.__gender = "男"
print(a.__dict__)   # {'_name': 1, '_A__age': 2, '__gender': '男'}
print(a.__gender)   # 返回“男”

b = A()
print(b.__dict__)   # {'_name': 1, '_A__age': 2}
b.__gender      # 语法报错

-事必有法,然后有成- 最后祝大家早日达到测试的天花板!



 以下是我收集到的比较好的学习教程资源,虽然不是什么很值钱的东西,如果你刚好需要,可以评论区,留言【777】直接拿走就好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值