python 变量前的 单下划线 双下划线

本文介绍了Python中变量单下划线和双下划线的含义。单下划线变量表面私有,按约定应视为私有变量;双下划线变量是真正私有,外部不能访问,但可通过特定方法突破限制。此外,名称前后双下划线是惯例,可覆写实现所需功能。

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

转自:https://blog.youkuaiyun.com/u013205877/article/details/77427785 

 

1.单下划线

变量前的单下划线表示表面上私有 
但是其实这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”。

例子:

class convertstrtoint:
    _name = "zhangkun333"
    __namedede = "zhangkun444"

print convertstrtoint._name
print convertstrtoint.__namedede
#输出
zhangkun333
Traceback (most recent call last):
  File "C:/zqxt/devnav/pythonnav/test.py", line 74, in <module>
    print convertstrtoint.__namedede
AttributeError: class convertstrtoint has no attribute '__namedede'


2.双下划线

变量前的单下划线表示真正的私有,实际上的私有,只有内部可以访问,外部不能访问 
但是有窍门,可以在类里面增加get__namedede和set__namedede这样的方法来突破限制,而且还能在方法里做验证

例子

class convertstrtoint:
    _name = "zhangkun333"
    __namedede = "zhangkun444"

    def get_namedede(self):
        return self.__namedede

    def set_namedede(self,s):
        self.__namedede = s

print convertstrtoint._name
rrr = convertstrtoint()
print rrr.get_namedede()
you = "you"
rrr.set_namedede(you)
print rrr.get_namedede()


其他(如:init):名称前后的双下划线是一种惯例,对Python系统来说,这将确保不会与用户自定义的名称冲突。通常,你将会覆写这些方法,并在里面实现你所需要的功能,以便Python调用它们。例如,当定义一个类时,你经常会覆写“init”方法
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值