day 21 作业
定义MySQL类
- 对象有id、host、port三个属性
- 定义工具create_id,在实例化时为每个对象随机生成id,保证id唯一
- 提供两种实例化方式,方式一:用户传入host和port 方式二:从配置文件中读取host和port进行实例化
- 为对象定制方法,save和get_obj_by_id,save能自动将对象序列化到文件中,文件路径为配置文件中 DB_PATH,文件名为id号,保存之前验证对象是否已经存在,若存在则抛出异常,get_obj_by_id方法用来从文件中反序列化出对象
Copyfrom conf import settings
import uuid
import pickle
import os
class MySQL:
def __init__(self, host, port):
self.id = self.create_id()
self.host = host
self.port = port
def save(self):
if self.is_exists:
raise PermissionError('对象已存在')
file_path = f'{settings.DB_PATH}{os.sep}{self.id}'
pickle.dump(self, open(file_path, 'wb'))
@property
def is_exists(self):
tag = False
files = os.listdir(settings.DB_PATH)
for file in files:
file_abspath = f'{settings.DB_PATH}{os.sep}{file}'
obj = pickle.load(open(file_abspath, 'rb'))
if self.host == obj.host and self.port == obj.port:
tag = True
break
return tag
@staticmethod
def get_obj_by_id(id):
file_path = f'{settings.DB_PATH}{os.sep}{id}'
return pickle.load(open(file_path, 'rb'))
@staticmethod
def create_id():
return str(uuid.uuid1())
@classmethod
def from_conf(cls):
print(cls)
return cls(settings.HOST, settings.PORT)
# conn = MySQL.from_conf()
# conn.save()
obj = MySQL.get_obj_by_id('504ab0f6-ec21-11e9-b9e2-d053497faa26')
print(obj.host)
定义一个类:圆形,该类有半径,周长,面积等属性,将半径隐藏起来,将周长与面积开放
Copyfrom math import pi
class Round:
def __init__(self, radius):
self.__radius = radius
def perimeter(self):
return round(2 * pi * self.__radius, 2)
def area(self):
return round(pi * (self.__radius ** 2), 2)
r = Round(1)
print(r.area())
print(r.perimeter())
print(r._Round__radius)
使用abc模块定义一个phone抽象类 并编写一个具体的实现类
Copyimport abc
# 抽象类/父类
class CellPhone(metaclass=abc.ABCMeta):
@abc.abstractmethod
def calling(self):
pass
@abc.abstractmethod
def send_msg(self):
pass
# 现实类/子类
class SmartPhone(CellPhone):
def calling(self):
print('calling...')
# def send_msg(self):
# print('sending msg...')
def app_download(self):
print('downloading app...')
iphone = SmartPhone()
iphone.calling()
iphone.send_msg()
iphone.app_download()
day 21 作业的更多相关文章
- day 21作业
目录 一.定义一个类:圆形,该类有半径,周长,面积等属性,将半径隐藏起来,将周长与面积开放 二.使用abc模块定义一个phone抽象类 并编写一个具体的实现类 一.定义一个类:圆形,该类有半径,周长, ...
- 20155213 第十二周课堂作业MySort
20155213 第十二周课堂作业MySort 作业要求 模拟实现Linux下Sort -t : -k 2的功能 参考 Sort的实现 提交码云链接和代码运行截图 初始代码 1 import java ...
- 《UNIX环境高级编程(第3版)》
<UNIX环境高级编程(第3版)> 基本信息 原书名:Advanced Programming in the UNIX Environment (3rd Edition) (Addison ...
- 【资料总结】html开发小实例
目 录 第1章 1 HTML的基本标签 1 第2章 25 表格基础 25 第3章 53 表单和框架 53 第4章 77 CSS样式表 77 第5章 104 使用Dreamweaver制作网页 104 ...
- MySQL数据库基本操作(二)
表结构操作 ( ALTER TABLE) 添加单列: ALTER TABLE tb1_name ADD [COLUNM] col_name column_definition [FIRST|AFTER ...
- SAP-财务知识点
[转自 http://blog.itpub.net/195776/viewspace-1023912/] SAP FI/CO Reading RepositorySAP财务成本知识库 目 录前言.一. ...
- 团队作业8——第二次项目冲刺(Beta阶段)--5.21 second day
团队作业8--第二次项目冲刺(Beta阶段)--5.21 second day Day two: 会议照片 项目进展 今天是beta冲刺的第二天,组长还在准备考试当中,我们继续做前端改进和后端安排,今 ...
- Java学习作业(14.4.21)
前三次作业都是基础语法.真的好水啊.从这次开始记录. 1.编写Java程序,把当前目录下扩展名为txt的文件的扩展名全部更名为back. import java.io.*; import java.l ...
- 团队作业8——第二次项目冲刺(Beta阶段)Day4--5.21
展开圆桌式会议: 会议内容:1.团队成员对昨天任务完成情况做一个简单交流,并对昨天工作中存在的问题提出集中讨论解决:2.按照昨天的昨天工作分配表做具体的任务分配:3.简单讨论明天的任务分配每个人的工作 ...
随机推荐
- redis 链接
一.redis启动: 本地启动:redis-cli 远程启动:redis-cli -h host -p port -a password 例如:redis-cli -h r-2mlmkmxu7.red ...
- windows中设置php环境变量
1.我的电脑->右键(选择我的属性) 2.点击高级设置 3.点击环境变量 4.在系统变量中找到Path 点击 5.找到php.exe的文件目录,添加到path中 6.php -v 显示版本,表示 ...
- es查询示例
1. 建立连接 from elasticsearch import Elasticsearch es = Elasticsearch(["localhost:9200"]) 2. ...
- 【计算机视觉】黄金标准算法Gold Standard algorithm
前言 最近有关于3DMM的内容,博主也只是看了个大概,并没有深入了解算法的实现原理和过程.昨天实习生问关于黄金标准算法的推导,博主也就参考一些资料熟悉了这个算法的实现过程.不太了解使用这个算法的前因后 ...
- cube-slide组件的应用
<template> <div> <cube-slide :data="items"/> </div> </template& ...
- spring boot 指定启动端口
spring boot 默认端口为8080 1.修改为指定端口 (1)修改配置文件 src/main/resources/application.properties server.port= (2) ...
- 浅谈 Docker 安全合规建设
通过阅读网上帖子及浏览相关信息,大家可能会产生一种错觉:Docker 安全性不足,对 Docker 导入生产环境持保守态度.不过实际情况是,虽然我们需要对容器的安全性高度关注,但只要使用得当,完全可以 ...
- 【jquery】【jqGrid】设置不能多选
onSelectAll:function(rowids,statue){ layui.layer.msg("请选择单条记录"); $("#jqGrid").jq ...
- scrollview的优化
针对一次加载很多格子的scrollview的优化,第一次只加载可视区域的格子,其他的用空物体占位,在每次滑动时检测需要实例化的格子,通过对象池重用第一次的格子.可以根据每行格子的数量只检测每行的第一个 ...
- beanshell 通过java写数据到文件
import java.io.*; String filePath = "/data/account.txt"; String conent = vars.get("ac ...