Python中的成员修饰符比Java中少了2个。只有公有和私有两种
Python Version: 3.5+
成员修饰符是用来设置字段、方法和属性的。默认情况下,成员是公有的
公有
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class C: def __init__(self, name): self.name = name
def func(self): print(self.name)
c = C("ps") print(c.name) c.func()
------------ ps ps
|
像以上代码那样,字段从类的内部和外部都可以访问的情况,成员修饰符就是公有的
私有
在类中的成员名前面加上两个下划线__
,就可以将该成员的属性设置为私有。私有的成员只有从类的内部访问的权限,出了该类的内部,其他任何地方都不允许访问,包括该类的派生类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class C: def __init__(self, name): self.__name = name
def func(self): print(self.__name)
c = C("ps") print(c.__name)
------------ Traceback (most recent call last): File "/Users/lvrui/PycharmProjects/untitled/8/c5.py", line 9, in <module> print(c.name) AttributeError: 'C' object has no attribute 'name'
|
1 2 3 4 5 6 7 8 9 10 11 12
| class C: def __init__(self, name): self.__name = name
def func(self): print(self.__name)
c = C("ps") c.func()
------------ ps
|
Python访问私有成员的后门
1 2 3 4 5 6 7 8 9 10
| class C: def __init__(self, name): self.__name = name
def func(self): print(self.__name)
c = C("ps")
print(c._C__name)
|
通过_类名__成员名
这样的语法格式来强制访问类中的私有成员