python 面向对象二

Python私有字段与方法详解

私有字段 ( 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

转载于:https://my.oschina.net/esdn/blog/792548

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值