python学习笔记(二十三)私有方法和私有属性
在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。
但是,从前面Person类的定义来看,外部代码还是可以自由地修改一个实例的name属性。
如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问。
import redis
class My(object):
def __init__(self):
self.__host = '118.24.3.40' #私有变量,只能在类里面使用,前面加两个下划线
self.__port =
self.__password = 'HK139bc&*'
try:
self.r = redis.Redis(host=self.__host,port=self.__port,password=self.__password)
except Exception as e:
print('redis连接失败。。。。') def get(self,k):
res = self.r.get(k)
if res:
return res.decode()
return None
def __close(self): #私有方法
print('close')
def str_set(self,k,v=None):
if v:
self.r.set(k,v)
return None
def str_delete(self,k):
#str类型的删除key
if self.get(k):
self.r.delete(k)
else:
print('redis中没有该key')
def hash_get(self,Dk,Xk):
# hash类型获取单个key
res = self.r.hget(Dk,Xk)
if res:
return res.decode()
return None
def hash_getall(self,Dk):
#hash类型获取key里面的所有数据
res = self.r.hgetall(Dk)
new = {}
for k,v in res:
new[k.decode()] = v.decode()
return new def hash_set(self,Dk,Xk,v=None):
#hash类型set
if v:
self.r.hset(Dk,Xk,v)
return None
def hash_del(self,Dk,Xk):
#删除某个hash里面小key
if self.r.hget(Dk,Xk):
self.r.hdel(Dk,Xk)
else:
print('该key不存在') def hash_delkey(self,Dk):
if self.r.hgetall(Dk):
self.r.delete(Dk)
else:
print('该hash key不存在。。。')
def clean_redis(self):
#清理redis
for k in self.r.keys():
self.r.delete(k) if __name__ == '__main__':
my = My()
my.hash_set('小Baby','毛毛')
print(my.hash_get('小Baby33','毛毛'))
这样就确保了外部代码不能随意修改对象内部的状态,这样通过访问限制的保护,代码更加健壮。
python学习笔记(二十三)私有方法和私有属性的更多相关文章
- python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码
python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码 淘宝IP地址库 http://ip.taobao.com/目前提供的服务包括:1. 根据用户提供的 ...
- Python学习笔记(十三)
Python学习笔记(十三): 模块 包 if name == main 软件目录结构规范 作业-ATM+购物商城程序 1. 模块 1. 模块导入方法 import 语句 import module1 ...
- 【python学习笔记】9.魔法方法、属性和迭代器
[python学习笔记]9.魔法方法.属性和迭代器 魔法方法:xx, 收尾各有两个下划线的方法 __init__(self): 构造方法,创建对象时候自动执行,可以为其增加参数, 父类构造方法不会被自 ...
- python学习笔记(二)、字符串操作
该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...
- Python 学习笔记二
笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...
- Python学习笔记第二十三周(Flask架构)
目录: 一.变量引用 内容: 备注:PyCharm小技巧,comm+alt+l 自动修改格式,comm+alt+return 向上添加新行 一.变量引用 1.url生成 from flask im ...
- Java基础学习笔记二十三 Java核心语法之反射
类加载器 类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,链接,初始化三步来实现对这个类进行初始化. 加载就是指将class文件读入内存,并为之创建一个Class对象.任 ...
- (C/C++学习笔记) 二十三. 运行时类型识别
二十三. 运行时类型识别 ● 定义 运行时类型识别(Run-time Type Identification, RTTI) 通过RTTI, 程序能够使用基类的指针或引用来检查(check)这些指针或引 ...
- (10.1)Python学习笔记二
1.在项目工程中要模块化测试一个开发的功能,在测试通过后交付给项目组其他人员继续开发.要保证代码开发的性能和效率以及可扩展性. 2.项目工程中的文件夹分类要功能模块明确清晰,在python中引入某一个 ...
- Python 学习笔记(十三)Python函数(二)
参数和变量 >>> def foo(a,b): #函数是一个对象 return a+b >>> p =foo #对象赋值语句.将foo函数赋值给p这个变量 > ...
随机推荐
- 程序员自己编写的类和JDK类是一种合作关系
封装类: JAVA为每一个简单数据类型提供了一个封装类,使每个简单数据类型可以被Object来装载. 除了int和char,其余类型首字母大写即成封装类. 转换字符的方式: int I=10; Str ...
- (转自)视频流中的DTS/PTS到底是什么;
翻译了一下: Q:hi,这可能是一个弱智问题,但是当我使用bbMEG1.24beta17编码时,一直以来总是遇到这个下溢的问题.我从日志文件中得到的唯一启示就是我应该更改mux率...但是帮助文档却 ...
- 标签中的rel属性的含义
rel与rev属性相同,它们都是属于LinkTypes属性. rel 属性 -- rel属性,描述了当前页面与href所指定文档的关系, rel是relationship(关系)的英文缩写. rev ...
- iOS开发之-- 抢购、距活动结束,剩余时间倒计时
因为没有时间去着重研究过这个东西,只是知道大体上的逻辑,就是两个时间才行比对,具体的实现也是参考别人的写的方法, 只是做个记录,有时间会好好看看这个东西,具体代码如下: /** * 倒计时 * * @ ...
- PHP后台代码解决跨域问题
在前端里面,解决跨域的时候总显得那么的恶心,什么jsonp啊,ajax啊,CORS啊什么的,总觉得是在钻空子进行跨域,其实在PHP文件里面只需要加一段代码就可以跨域了,前端你该怎么写还是怎么写,p ...
- Git-fatal: unable to access 'xxx' : Could not resolve host: xxx
解决办法:(在知乎上找到 确实好用) 1.查询代理 git config --global http.proxy 2.取消代理设置 git config --global --unset http.p ...
- centos7 edit hostname
1.临时修改主机名 hostname 主机名 重新连接shell,就可以,这种方式,只能修改临时的主机名,当重启机器后,主机名称又变回来了. 2.永久修改主机名 hostnamectl set-hos ...
- iOS 界面翻转切换动画
[UIView beginAnimations:nil context:NULL]; [UIView setAnimationCurve:UIViewAnimationCurveLinear]; [ ...
- vector排序问题<unresolved overloaded function type>
要对vector中的自定义类型进行排序,首先需要提供一个函数bool comp(const Interval & a, const Interval & b) 来定义类型的排序准则 然 ...
- fieldmeta 基于springboot的字段元数据管理,通用代码生成,快速开发引擎
fieldmeta: 基于springboot的字段元数据管理 version:Alpha 0.0.1 ,码云地址:https://gitee.com/klguang/fieldmeta 元数据(Me ...