Python学习笔记——私有化
来源:互联网 发布:优化设计 编辑:程序博客网 时间:2024/06/14 02:21
一、类中的私有化
类中有私有属性,私有方法,对外保密,也不会被子类继承。
1、私有属性
下面我们就写个类。
class test(object): """docstring for test""" def __init__(self): super(test, self).__init__() self.__num = 100
私有属性__num,下面我们从外面调用下:
错误提示:test类没这个属性。
这时候我们一般的做法是暴露出来两个方法,get获取值方法,和set设置值方法。
如下:
这样我们就可以访问到了这个属性了。
(偷笑)
其实还有一种方法可以访问到。
就是直接调用。
在之前的直接调用中,为什么我们调用不到呢?
其实是因为Python偷偷的给我们把变量名给改了。
我们利用dir()命令查看这个类中所有的方法和属性。显示如下:
看到了么?箭头的标记。py君把私有变量名改为 “_类名+私有变量名” 了,在我这里就是 “_test__num”。下面我们再次调用试试。
看看是不是访问到了。不仅能访问,还能修改呢~(千万不要乱用这种方法哟)
2、私有方法
class test(object): """docstring for test""" def __init__(self): super(test, self).__init__() def __printName(self): print('sy')t = test()t.__printName()
运行如下:
错误提示:test类没这个属性。
私有方法仅限于在这个类中使用。
实质上也是py君改变了私有类的名称,我们用刚才的方法调用试试吧。
这种方法知道就好了,不要乱用哦~
二、模块中的私有化
我们先写个模块
num = 100_num2 = 150__num3 = 300def printName(): print('sy')def _printName1(): print('sy1')def __printName1(): print('sy2')
利用 from private import * 导入
(顺带复习下之前的import方法)
只要是带着”_”的,全部都是未定义错误。
那我们试试import private
这样就可以使用了。
我认为原因应该是在用 * 导入的时候,py君会自动过滤掉以 “_” 开头的属性和方法。
(我用 “_private__num2” 方法 也调用不到哟~)
如果直接将整个模块导入,以模块本身的角度是可以去调用模块内的所有属性和方法,包括私有的。
以上。
阅读全文
0 0
- Python学习笔记——私有化
- Python--私有化
- python学习-面向对象进阶之私有化(六)
- python基础(05)——类,对象,私有化封装,继承
- Python基础:15私有化
- python的私有化
- Python的私有化
- Python中的下划线/私有化
- python中的私有化
- Java——构造方法私有化2
- Python高级教程之私有化
- python特性、属性以及私有化
- python特性、属性以及私有化
- Python特性、属性以及私有化
- python 学习笔记——python globals()
- Python学习笔记 — 函数
- Python学习笔记—钱珺
- python学习笔记—输入输出
- 《技术之瞳》- 操作系统
- UVA10082WERTYU
- Easyui+MVC行内编辑
- 详解捕获异常的try-catch-finlly语句
- spring boot集成mybatis-generator-maven-plugin和通用mapper
- Python学习笔记——私有化
- git--分支管理
- 以太坊被盗,回顾一下这几年发生的安全事件
- UVA-1583Digit Generator
- 数据库学习(三)----基础查询和关联查询
- Stones
- 使用python在图片中如何添加文字?
- RH124-第一节-走进Linux以及基本操作
- UVA-10935Throwing cards away I