前置单下划线:
1.表示仅供内部使用,但实际上仍然可以被直接访问。
class Person:
def __init__(self):
self.func()
self._age=18
def func(self):
print('Human')
class Man(Person):
def func(self):
print("Mike")
t=Man()
print(t._age)
输出:
Mike
18
2.如果用from moudle import *导入模块,会报错,需要使用__all__ = [“xxx”,“xxx”]来导入
demo1
def _name():
print('Human')
demo2
from demo1 import *
_name()
输出:
NameError: name '_age' is not defined
后置单下划线:
普通的变量名,通常用来避免和Python的内置变量名产生冲突
前置双下划线:
1.不可被from moudle import *直接导入,同前置单下划线
2.表明是私有属性,只能在当前类中被调用,外部、子类都无法调用和继承
class Person:
def __func(self):
print('Human')
class Man(Person):
def __init__(self):
self.__func()
Man()
输出:
AttributeError: 'Man' object has no attribute '_Man__func'
前置后置双下划线:
表示python里特殊方法专用的标识,如__init__和__dict__
一般不建议这样命名