在一个类的定义,所有的名字 开始 与双下划线错位; 重写以包含类名作为前缀。
此功能可支持在类中将名称标记为“私有”,并防止其被子类覆盖。请参阅标识符文档:
私有名称修饰
:当在类定义中以文本形式出现的标识符以两个或多个下划线字符开头且不以两个或多个下划线结尾时,则被视为该类的私有名称。在为专用名称生成代码之前,专用名称会转换为更长的格式。转换将在类名前面插入类名,并删除前导下划线,并插入单个下划线。例如,__spam出现在名为的类中的标识符Ham将被转换为_Ham__spam。此转换独立于使用标识符的句法上下文。如果转换后的名称过长(超过255个字符),则可能会发生实现定义的截断。如果类名仅包含下划线,则不进行任何转换。
最好不要在模块全局变量上使用双下划线前缀;无需这样做,一个下划线就足以表明该值在模块内部。
如果您坚持使用这样的值,请创建一个不乱码的别名,或使用
globals()[name]。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)