暂无 |

封装

强私有方法和属性在其名称的开头具有双下划线。这导致它们的名称被损坏,这意味着它们不能从类外部访问。 这样做的目的不是确保它们保持私有,而是避免如果存在具有相同名称的方法或属性的子类,则避免错误。 __privatemethod的方法仍然可以从外部访问,但可以用不同的名称访问。 Spam 类的私有方法可以用_Spam__方法进行外部访问。

class Spam:
  __egg = 7
  def print_egg(self):
    print(self.__egg)

s = Spam()
s.print_egg()
print(s._Spam__egg)
print(s.__egg)

结果:

>>>
7
7
AttributeError: 'Spam' object has no attribute '__egg'
>>>
基本上,Python通过在内部更改名称以包含类名来保护这些成员。

0

发表评论

    评价:
    验证码: 点击我更换图片
    最新评论