文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python私有成员与公有成员(_和__

2023-01-30 22:22

关注

python并没有对私有成员提供严格的访问保护机制。

  • 在定义类的成员时,如果成员名以两个下划线“__”或更多下划线开头而不以两个或更多下划线结束则表示是私有成员。
  • 私有成员在类的外部不能直接访问,需要通过调用对象的公开成员方法来访问,也可以通过Python支持的特殊方式来访问。
 1 class A:
 2     def __init__(self, value1 = 0, value2 = 0):
 3         self._value1 = value1
 4         self.__value2 = value2
 5     def setValue(self, value1, value2):
 6         self._value1 = value1
 7         self.__value2 = value2
 8     def show(self):
 9         print(self._value1)
10         print(self.__value2)
11 
12 >>> a = A()
13 >>> a._value1
14 0
15 >>> a._A__value2         # 在外部访问对象的私有数据成员
16 0
在Python中,以下划线开头的变量名和方法名有特殊的含义,尤其是在类的定义中。
  • _xxx:受保护成员,不能用"from module import *"导入
  • __xxx__:系统定义的特殊成员
  • __xxx:私有成员,只有类对象自己能访问,子类对象不能直接访问到这个成员,但在对象外部可以通过“对象名._类名__xxx”这样的特殊方式来访问
Python中不存在严格意义上的私有成员。
 1 class Fruit:
 2     def __init__(self):
 3         self.__color = 'Red'
 4         self.price = 1
 5 >>> apple = Fruit()
 6 >>> apple.price                               # 显示对象公开数据成员的值
 7 1
 8 >>> print(apple.price, apple._Fruit__color)   # 显示对象私有数据成员的值
 9 1 Red
10 >>> apple.price = 2                           # 修改对象公开数据成员的值
11 >>> apple._Fruit__color = "Blue"              # 修改对象私有数据成员的值
12 >>> print(apple.price, apple._Fruit__color)
13 2 Blue
14 >>> print(apple.__color)                      # 不能直接访问对象的私有数据成员,出错
15 AttributeError:Fruit instance has no attribute '__color'

在程序中,可以使用一个下划线“_”来表示不关心该变量的值。

1 for _ in range(5):
2     print(3, end=' ')     # 此处的3可以为任意值,输出结果为重复5次的值。若改为print(_, end=' ');>>>0 1 2 3 4
3 3 3 3 3 3
4 >>> a, _ = divmod(60, 18) # 只关心整商,不关心余数。
5 >>> a                     # 即等价于a = 60//18
6 3
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯