# 广义的封装: 实例化一个对象,给对象空间封装一些属性.
# 狭义的封装: 私有化,只能在类的内部访问
# 私有成员:私有静态字段,私有方法,私有对象属性
#在内存中存储:_类名__名字
#只能在本类中访问,类的外部和派生类均不可使用,原因:调用时传的是外部的类名,故找不到
1、私有静态字段:
class B:
__money = 100000
class A(B):
name = 'alex'
__age = 1000
def func(self):
print(self.__age) # 对于私有静态字段,类的内部可以访问.
print(A.__age) # 对于私有静态字段,类的内部可以访问.
print('func....')
def func1(self):
print(self.__money)
print(A.__money)
a1 = A()
print(a1.name)
print(A.name)
Print(a1.__dict__) #可以查看到私有静态变量
print(a1.__age) # 实例化对象不能访问私有静态字段
print(A.__age) # 类名不能访问私有静态字段
# 对于私有静态字段,类的外部不能访问.
a1.func() #对于私有静态字段,类的内部可以访问.
a1.func1() #对于私有静态字段来说,只能在本类中内部访问,类的外部,派生类均不可访问.
# python中其实也可以访问,但是工作中千万不要用.
print(A._A__age)
print(A.__dict__)
# 2、私有方法
class B:
__money = 100000
def __f1(self):
print('B')
class A(B):
name = 'alex'
def __func(self)
print('func....')
def func1(self):
# self.__func() # 类的内部可以访问
self.__f1()
a1 = A()
a1.__func() # 类外部不能访问
#a1.func1() # 类的内部可以访问
a1.func1() # 类的派生类也不能访问