python 面向对象二
python 面向对象二
明月知心 发表于1年前
python 面向对象二
  • 发表于 1年前
  • 阅读 10
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 私有字段和私有方法

私有字段 ( 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 Filed
共有 人打赏支持
粉丝 5
博文 155
码字总数 70269
×
明月知心
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: