python学习之私有属性

class Mapping(object):
def __init__(self,iterable):
self.items_list=[]
self.__update(iterable)

def update(self,iterable):
for item in iterable:
self.items_list.append(item)
return self.items_list

__update=update

class MappingSubclass(Mapping):
def update(self,keys,values):
for item in zip(keys,values):
self.items_list.append(item)
return self.items_list

a=[1,2,3,4,5]
mapp=Mapping(a)
a1=mapp.update([6,8,9,10])
print(a1)
print(Mapping.__dict__)

b=[11,12,13]
mappsub=MappingSubclass(b)
b1=mappsub.update('name','zhao')
print(b1)

私有性:
1.双下划线(__)
Python为类元素(属性和方法)的私有性提供初步的形式。由双下划线开始的属性在运行时被“混淆”
所以直接访问是不允许的。会在名字前面加上下划线和类名。
名字混淆的另一个目的,是为了保护__XXX变量不与父类名字空间相冲突。
父类中有__XXX属性,它将不会被子类中__XXX属性覆盖

2.单下划线(_)
模块级私有化只需要在属性名前使用一个单下划线字符。这就防止模块的属性用
“from mymodule import*”来加载。



原文地址:https://www.cnblogs.com/jinpingzhao/p/12659642.html