私有字段 ( filed)
不想被外部访问或不想暴露给外部的内容,可以定义一个 私有字段 self.__xxx
私有字段不能被 对象和 类直接访问,需要 定义 1个函数来访问 (不推荐,相当于暴露)
class file():
files="文件之一" #静态字段
def __init__(self,name,size):
self.size=size #动态字段
self.__name=name #私有字段
def show(self): # 通过函数访问私有字段 还是暴露给第三方,一般不这么写
return self.__name
esdn=file("岛国风光","80g")
print(file.files)
print(esdn.size)
print(esdn.show()) #对象访问私有字段
print(file.show(esdn))#类访问私有字段
#print(esdn.__name)
#直接访问私有字段则会报错
私有方法:和私有字段类似不能直接调用 ,也需要通过函数调用(不推荐,相当于暴露)
def __foo():
def __foo(self): #私有方法
print('这是1个私有方法')
def show2(self): #通过函数访问私有方法 还是暴露给第三方,一般不这么写
self.__foo()
esdn.show2() #通过对象访问私有方法
file.show2(esdn) #通过类访问私有方法
不通过函数强行访问一个私有方法:虽然可以,但不推荐
esdn._file.__foo() 注意前面是1个 【 _ 】,后面是 2 个下划线
结构:实例对象._类.__私有方法
私有字段权限设置
只读,可写(修改)
class Moive(object): #必须继承object
def __init__(self,name):
self.__foo=name
@property #私有字段只读
def foo(self):
return self.__foo
@foo.setter #私有字段可以修改
def foo(self,value):
self.__foo=value
moive1=Moive('大桥未久')
print(moive1.foo) #访问私有字段
moive1.foo=('上原亚衣') #访问私有字段
print(moive1.foo)
一般用@property 设置为只读 ,@property + @foo().setter 设置为可写 ,用他俩访问私有字段时
类声明时,括号内要加 object
Python私有字段与方法详解


被折叠的 条评论
为什么被折叠?



