v: 表明是私有属性或私有方法, 在外部不应调用
__v: 表明是私有属性或私有方法, 在外部不应调用; 在子类中, 不会被子类的同名属性或方法覆盖. 名字被重命名为 类名_v
v: 避免名称冲突, 比如不希望某个属性或方法与关键字冲突.
class A:
def __init__(self):
self._internal = 0
self.public = 1
def public_method(self):
print('public_method')
def _internal_method(self):
print('_internal_method')
class B:
def __init__(self):
self.__private = 0
def __private_method(self):
print('__private_method')
def public_method(self):
print('public_method')
print('[*] run __private_method from public_method')
self.__private_method()
class C(B):
def __init__(self):
super().__init__()
self.__private = 1