day15-3
成员修饰符
公有的
在类的里面和外面也可以访问
静态字段
1.class foo:
2. aa = "AA"
3.
4.print(foo.aa)
普通字段
1.class foo:
2. def __init__(self):
3. self.name = "haha"
4.
5.obj = foo()
6.print(obj.name)
私有的
- 以双下划线开头;如:__aa
- 只能在类里面进行访问;外面是没办法访问的
静态字段
1.class foo:
2. __aa = "AA"
3.
4. def fun(self):
5. print(foo.__aa)
6.
7.# print(foo.aa) # 这样写会报错!
8.
9.obj = foo()
10.obj.fun()
普通字段
1.class foo:
2. def __init__(self):
3. self.__name = "haha"
4.
5.obj = foo()
6.print(obj.__name)
结果显示:
1.Traceback (most recent call last):
2. File "D:/Python练习/Python学习/day17/test.py", line 42, in <module>
3. print(obj.__name)
4.AttributeError: 'foo' object has no attribute '__name'
注意:
普通字段的在类外面访问会报错!
测试继承关系能否访问
1.class foo:
2. def __init__(self):
3. self.__name = "haha"
4.
5.class xxx(foo):
6. def aaa(self):
7. print(self.name)
8.obj = xxx()
9.print(obj.__name)
结果:报错!
总结:
1、成员修饰符有2种
公有的:在那里都可以访问
私有的:不止在外面访问不了;在子类(即:派生类)也是访问不了的;只能自己访问
2、私有的不止普通字符串有这样的特权;其他的,静态字符串;静态方法等成员都一样
3、但是可以通过私有对应类里面的其他方法访问
扩展(不建议用)
如果我非得要访问类中得私有成员;那怎么办那?
1.class foo:
2. def __init__(self):
3. self.__name = "haha"
4.
5.class xxx(foo):
6. def aaa(self):
7. print(self.name)
8.obj = xxx()
9.print(obj._foo__name)
结果:
1.haha
格式
(对象)(.)(_)(类名)(私有对象名)
如:上面例子中得 obj._foo__name
浙公网安备 33010602011771号