Python : Python中单下划线和双下划线

本文深入探讨了Python中私有属性的实现机制,包括__foo和_foo的使用区别,以及如何正确访问类的私有成员。通过实例代码,解释了Python解释器如何处理私有属性,防止命名冲突。

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

class MyClass():
… def init(self):
… self.__superprivate = “Hello”
… self._semiprivate = “, world!”

mc = MyClass()
print mc.__superprivate
Traceback (most recent call last):
File “”, line 1, in
AttributeError: myClass instance has no attribute ‘__superprivate’
print mc._semiprivate
, world!
print mc.dict
{’_MyClass__superprivate’: ‘Hello’, ‘_semiprivate’: ‘, world!’}

foo:一种约定,Python内部的名字,用来区别其他用户自定义的命名,以防冲突,就是例如__init__(),del(),call()这些特殊方法

_foo:一种约定,用来指定变量私有.程序员用来指定私有变量的一种方式.不能用from module import * 导入,其他方面和公有一样访问;

__foo:这个有真正的意义:解析器用_classname__foo来代替这个名字,以区别和其他类相同的命名,它无法直接像公有成员一样随便访问,通过对象名._类名__xxx这样的方式可以访问.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值