python

当前位置:中华考试网 >> python >> python编程基础 >> 文章内容

python私有属性访问不到吗?

来源:中华考试网  [2020年11月6日]  【

  要了解私有属性是否真的访问不到,需要从Python是如何实现私有属性入手。在Python中,会把双下划线的属性变为_ClassName__PropertyName的形式,用代码演示一下:

  class Foo(object):

  __bar = 123

  print(Foo._Foo__bar) # 123

  运行一下可以知道,正常输出了__bar的值,但是不推荐这样去访问私有属性,因为不同的Python解释器对于私有属性的处理不一样。

  特例

  使用双下划线定义私有属性,有一种特殊情况,当属性后也有两个下划线的时候,这个属性会被Python解释器当做魔术方法,从而不做私有处理。

  class Foo(object):

  __bar__ = 123

  print(Foo.__bar__) # 123

  上面代码输出了123,证明Python解释器并没有把__bar__当做私有属性。当定义私有属性时,需要注意名字最后最多只能有一个下划线。

  另一个特例

  假如定义的属性名就叫__呢?不妨直接试一下:

  class Foo(object):

  __ = 123

  print(Foo.__) # 123

  可以发现名字叫__的属性也不会被认为是私有属性,名字是多个下划线的属性也不是私有属性(比如_______)。

责编:fushihao
  • 会计考试
  • 建筑工程
  • 职业资格
  • 医药考试
  • 外语考试
  • 学历考试