__getitem__\__setitem__\__delitem__

class Foo:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def __getitem__(self, item):
if hasattr(self,item):
return self.__dict__[item]
def __setitem__(self,key,value):
self.__dict__[key] = value
def __delitem__(self, key):
del self.__dict__[key] f = Foo('egon',38,'男')
print(f['name'])
f['hobby'] = '男'
print(f.hobby,f['hobby'])
print(f.__dict__)
del f['hobby']
print(f.__dict__)
# __new__
class A:
def __init__(self):
self.x = 1
print('in init function')
def __new__(cls, *args, **kwargs):
print('in new function')
return object.__new__(A, *args, **kwargs) a = A()
print(a.x) in new function
in init function
1
# __eq__
class A:
def __init__(self,name):
self.name = name
def __eq__(self, other):
if self.name == other.name:
return True
else:
return False
obj1= A('egg')
obj2 = A('egg')
print(obj1 == obj2)
# __hash__
class A:
def __init__(self,name,sex):
self.name = name
self.sex = sex
def __hash__(self):
return hash(self.name+self.sex)
a = A('egon','男')
b = A('egon','男')
print(hash(a))
print(hash(b))

hashlib模块

import hashlib   #提供摘要算法的模块
md5 = hashlib.md5()
md5.update(b'tim')
print(md5.hexdigest())
# 不管算法多么不通,摘要的功能始终不变
# 对于相同的字符串进行使用同一个算法进行摘要,得到的值总是不变的
# 如果使用不通算法对相同的字符串进行摘要得到的值应该不同
# 不管使用什么算法,使用hashlib的方式永远不变
import hashlib   #提供摘要算法的模块
sha = hashlib.sha1()
sha.update(b'tim')
print(sha.hexdigest())
# sha 算法随着算法复杂度的增加,我摘要的时间成本和空间成本都会增加
# 基于摘要算法
# 密码的密文存储
# 文件的一致性验证
# 在下载的时候,检查我们下载的文件和远程服务器上的文件是否一致
# 两台机器上的两个文件,想检查这两个文件是否相等
import hashlib   #提供摘要算法的模块
usr = input('username: ')
pwd = input('password: ')
with open('userinfo') as f:
for line in f:
user,passwd,role = line.split('|')
md5 =hashlib.md5()
md5.update(bytes(pwd,encoding='utf-8'))
md5_pwd = md5.hexdigest()
if usr == usr and md5_pwd == passwd:
print('sucess login in')
# 加盐
import hashlib #提供摘要算法的模块
md5 = hashlib.md5(bytes('salt',encoding='utf-8'))
md5.update(b'tim')
print(md5.hexdigest())
# 动态加盐
# 用户名的一部分或者直接使用用户名作为盐

最新文章

  1. Unity3D 物体跟随鼠标旋转
  2. linux vps安装kloxo配置全部过程
  3. Unity3d 提示 "The scripts file name does not match the name of the class defined in the script!"的解决办法
  4. JDK注解替代Hibernate的Entity映射
  5. 6/8/9/10/11 Sprint2 看板和燃尽图
  6. Yii批量添加的问题
  7. eclipse:运行 Android 项目时出现 “Unable to execute dex: Multiple dex files define” 解决方法
  8. java积累
  9. OGR API Tutorial
  10. leetcode70
  11. mac 连接linux服务器,用scp命令实现本地文件与服务器文件之间的互相传输
  12. Redis数据库云端最佳技术实践
  13. springdataJAP的更新与保存的方法是同一个
  14. JDBC 返回主键
  15. 读书笔记--Android Gradle权威指南(上)
  16. 根据浏览器内核判断是web/iOS/android/ipad/iphone 来打开不同的网站或页面
  17. golang gob 有什么优势? gob/protobuf/json/xml 效率对比,benchmark 压力测试
  18. python学习笔记02--列表和元组
  19. SourceTree跳过注册安装使用
  20. IOC轻量级框架之Unity

热门文章

  1. ZipUtils
  2. Qconf安装文档
  3. 洪水 Pow
  4. MySQL 如何在一个语句中更新一个数值后返回该值 -- 自增长种子竞态问题处理
  5. js正则匹配获取文件名
  6. css3创建多边形clip属性,可用来绘制不规则图形了
  7. 一键部署WordPress开源内容管理系统
  8. Lua与游戏的不解之缘
  9. Servlet中的属性(attribute)和参数(parameter)的区别
  10. Context 使用不当造成内存泄露