- Python中,类的成员(成员变量、成员方法)是否为私有,完全由这个成员的名字决定。
如果一个成员的名字以两个下划线__开头,但不以两个下划线__结尾,则这个元素为私有的(private);否则,则为公有的(public)。Pyhton里边并没有protected的概念。 - 外部类无法直接访问类内部的私有成员,访问会报错
- 外部类通过特殊方式可以访问类内部的私有成员,如下案例
class Hugo:
def __init__(self):
self.__name = "hugo"
def Say(self):
# 在类内部使用私有成员变量__name
print("my name is:", self.__name)
boy = Hugo()
boy.Say() # OK
# 此处抛出一个异常,提示__name不存在
print("name of boy:", boy.__name)
# 私有成员并非真正私有,通过_Hugo__name可以在外部访问私有变量__name,私有方法同理 -- 不建议这么做
print("name of boy:", boy._Hugo__name)