目录
一、解释一下几个私有化访问的方式!!!
1.类内部访问:
2.子类访问
3.模块内其他位置访问
4.跨模块访问
二、_y受保护属性的访问
只有跨模块这块需要注意一下!
这个是可以访问的
但是下面这个是不可以的
但是在原始模块内部如果加入了__all__=['~~~~~~']就可以啦!
三、最后一个就是__z两根下划线的 私有变量访问
1、类的内部可以进行访问
2、子类不可以进行访问
3、模块内其他部分进行访问【不行】
编辑4、跨模块访问和一根线的一样import可以,from import不可以
一个很好的图 关注一下
一、解释一下几个私有化访问的方式!!!
1.类内部访问:
class Animal:x = 10def test(self):print(Animal.x)print(self.x)pass
#测试代码
a =Animal()
# a.test()
2.子类访问
class Animal:x = 10def test(self):print(Animal.x)print(self.x)pass
class Dog(Animal):def test2(self):print(Dog.x)print(self.x)pass
d = Dog()
d.test2()
3.模块内其他位置访问
class Animal:x = 10def test(self):print(Animal.x)print(self.x)pass
class Dog(Animal):def test2(self):print(Dog.x)print(self.x)pass
#测试代码
a =Animal()
# a.test()d = Dog()
#d.test2()
print(Animal)
print(Dog)
print(a.x)
print(d.x)
4.跨模块访问
import 类对象的创建方式
print(类对象的创建方式.x)from 类对象的创建方式 import *
print(x)
二、_y受保护属性的访问
其它都和上面一样就不过多赘述了
class Animal:_x = 10def test(self):print(Animal._x)print(self._x)
a = Animal()
# a.test()
class Dog(Animal):def test(self):print(Dog._x)print(self._x)pass
d = Dog()
d.test()
只有跨模块这块需要注意一下!
这个是可以访问的
import 类对象的创建方式
print(类对象的创建方式._a)
但是下面这个是不可以的
from 类对象的创建方式 import *
print(_a)
但是在原始模块内部如果加入了__all__=['~~~~~~']就可以啦!
__all__=['_a']
_a =666
三、最后一个就是__z两根下划线的 私有变量访问
1、类的内部可以进行访问
class Person:def __init__(self):self.__age = 18def setAge(self,value):self.__age = valuedef getAge(self):return self.__age
p1 = Person()
p1.__age = -10
print(p1.__age)
class Animal:__x = 10def test(self):print(Animal.__x)print(self.__x)pass
class Dog(Animal):def test2(self):print(Dog.__x)print(self.__x)pass
p1 = Animal()
p1.test()
2、子类不可以进行访问
class Animal:__x = 10def test(self):print(Animal.__x)print(self.__x)pass
class Dog(Animal):def test2(self):print(Dog.__x)print(self.__x)pass
# p1 = Animal()
# p1.test()p2 = Dog()
p2.test2()
3、模块内其他部分进行访问【不行】
class Animal:__x = 10def test(self):print(Animal.__x)print(self.__x)pass
class Dog(Animal):def test2(self):print(Dog.__x)print(self.__x)pass
p1 = Animal()
# p1.test()p2 = Dog()
# p2.test2()print(Animal.__x)
print(Dog.__x)
print(p1.__x)
print(p2.__x)