python封装
- 广义的封装: 给类中封装静态字段,给对象封装属性,
- 狭义的封装: 静态私有字段,静态私有方法,静态所有属性.
封装的坑
广义
class A:
def func(self):
print('IN A')
def __init__(self):
self.func()
class B(A):
def func(self):
print('IN B')
b = B()
#执行结果为 'IN B'
A和B中的func()实际函数名是相同的,在执行__init__中的self.func()时,先在子类中寻找func()
狭义(私有)
class A:
def __func(self):
print('IN A')
def __init__(self):
self.__func()
class B(A):
def __func(self):
print('IN B')
b = B()
#执行结果为' IN A '
私有方法在python中实际被编译为 _A__func()和_B__func(),所以A和B中的__func()是不同的,执行__init__时,直接执行的是self._A__func().