文档章节

python 面向对象二

明月知心
 明月知心
发布于 2016/11/22 22:18
字数 469
阅读 10
收藏 0

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

© 著作权归作者所有

共有 人打赏支持
明月知心
粉丝 6
博文 158
码字总数 71882
作品 0
武汉
程序员
云计算培训学院,云计算Python自动化运维开发实战

都忘记是什么时候知道python的了,我是搞linux运维的,早先只是知道搞运维必须会shell,要做一些运维自动化的工作,比如实现一些定时备份数据啊、批量执行某个操作啊、写写监控脚本什么的。后...

长沙千锋
05/15
0
0
如何捅破python编程的那层纸

如何捅破python编程的那层纸 一些朋友自学python过程中,发现书也能看懂,书上的玩具代码也能看懂,但为啥自己不能做习题,不能写代码解决问题,自己不能动手写代码?原因是初学者没有学会计...

黄哥Python培训
2015/02/10
0
0
Python爱好者要明确的未来方向

了解Python是什么? Python 这门语言它是面向对象编程语言,有封装强大的类库,Python目前已经超过了Java成为人们最喜欢的编程语言。相比Java,Python更加的容易理解、免费开源的代码、Pytho...

糖宝lsh
09/20
0
0
关于Python的类成员和Javascript的原型

偶然发现两个的设计思路是一致的(个人理解,欢迎指正)。这里简要分析一下: Python的类成员,也就是直接定义在类里的变量(实例成员是用self.x直接声明的),而类方法就是用@classmethod说...

Shawphy
2011/08/30
0
2
【简明 Python 教程】学习笔记【Python简介及基本概念】

Python的特色:简单、易学、免费开源、高层语言、可移植性、解释性、面向对象、可扩展性、可嵌入性、丰富的库。 Ctrl-d退出提示符; Ctrl-z再按Enter。 复数。 标示符的命名: 标示符是用来标...

donhui
2014/11/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

搬瓦工镜像站bwh1.net被DNS污染,国内打不开搬瓦工官网

今天下午(2018年10月17日),继搬瓦工主域名bandwagonhost.com被污染后,这个国内的镜像地址bwh1.net也被墙了。那么目前应该怎么访问搬瓦工官网呢? 消息来源:搬瓦工优惠网->搬瓦工镜像站b...

flyzy2005
26分钟前
1
0
SpringBoot自动配置

本篇介绍下,如何通过springboot的自动配置,将公司项目内的依赖jar,不需要扫描路径,依赖jar的情况下,就能将jar内配置了@configuration注解的类,创建到IOC里面 介绍下开发环境 JDK版本1.8 spr...

贺小五
今天
3
0
命令行新建Maven多项目

参考地址 # DgroupId 可以理解为包名# DartifactId 可以理解为项目名mvn archetype:generate -DgroupId=cn.modfun -DartifactId=scaffold -DarchetypeArtifactId=maven-archetype-quickst......

阿白
今天
1
0
OSChina 周四乱弹 —— 上帝对我单身年限的惩罚越来越长了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享张卫健的单曲《身体健康》 《身体健康》- 张卫健 手机党少年们想听歌,请使劲儿戳(这里) 昨天是重阳节咯, 可惜小小编辑总是晚...

小小编辑
今天
12
1
django rest framework 外键序列化方法与问题总结

django rest framework 外键序列化方法与问题总结 当借口中需要出现一对多关系的时候,我们可以用rest_framwork的序列化功能来处理,代码如下. # models.pyfrom django.db import modelscl...

_Change_
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部