写点什么

python 中私有成员和公有成员

作者:乔乔
  • 2022-11-08
    辽宁
  • 本文字数:985 字

    阅读完需:约 3 分钟

私有成员

  • 私有成员在类的外部不能直接访问,一般是在类的内部进行操作和访问,或者在类的外部通过调用对象的公有成员方法来访问。公有成员(或公开成员)是可以公开使用的,既可以在类的内部进行访问,也可以在外部程序中使用。

  • 从形式上看,在定义类的成员时,如果成员名以两个(或更多)下画线开头但是不以两个(或更多)下画线结束则表示结束则表示是私有成员,否则就不是私有成员。python 并没有对私有成员提供严格的访问机制,通过一个特殊方式“对象名._类名__xxx”也可以在外部程序中访问私有成员,但这会破坏类的封装,不建议这样做。

案例展示

>>>class A:def __init__(self,value1=0,value2=0):    #此处构造方法    self._value1=value1    self.__value2=value2    #私有成员def setValue(self,value1,value2):   #成员方法,公有成员    self._value1=value1    self.__value2=value2       #在类内部可以直接访问私有成员def show(self):            #成员方法,公有成员    print(self._value1)    print(self.__value2)>>> a=A()>>> a._value1        #在类外部可以直接访问非私有成员0>>> a._A__value2      #在类外部访问对象的私有数据成员0复制代码
复制代码

圆点

“."是成员访问运算符,可以用来访问命名空间,模块或对象中的成员,在 IDIE,Eclipse+PyDev,WingIDE,PyCharm 或其他 Python 开发环境中,在对象或类名后面加上一个圆点“.",都会自动列出其所有公开成员。如果在原点“."后面再加一个下划线,会列出该对象或类的所有成员,包括私有成员。 当然,也可以使用内置函数 dir()来查看指定对象,模块或命名空间的所有成员

下划线在 python 中的含义

  • _xxx: 以下划线开头,保护成员,只有类对象和子类对象可以访问这些成员,在一类的外部一般不建议直接访问,在模块中使用一个或多个下划线开头的成员不能用from module input * 导入,除非在模块中使用__all__变量明确指明这样的成员可以被导入。

  • __ xxx__:前后各两条下划线,系统定义的特殊成员。

  • __ xxx: 以两个或更多下划线开头但不以两个或更多下划线结束,表示私有成员,一般只有基类的对象自己能访问,子类的对象也不能访问该成员,但在基类的对象外部可以通过 ,“对象名._类名__xxx”


作者:Nicole 乔


链接:https://juejin.cn/post/7154347665340399652


来源:稀土掘金


著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

发布于: 刚刚阅读数: 4
用户头像

乔乔

关注

平安喜乐,一切顺遂 2022-07-01 加入

一个热爱技术,热爱生活的人

评论

发布
暂无评论
python中私有成员和公有成员_11月月更_乔乔_InfoQ写作社区