day 21 (作业)
01
import hashlib
import pickle
import os
import time
BASE_path = os.path.dirname(os.path.dirname(__file__))
DB_path = os.path.join(BASE_path, 'db')
class MySQL:
def __init__(self, host, port):
self.host = host
self.port = port
self.id = self.create_id()
self.file_path = os.path.join(DB_path, f'{self.id}.pkl')
def create_id(self):
num = hashlib.md5()
num.update(f'{time.strftime("%y-%m-%d")}{self.host}{self.port}'.encode('utf-8'))
return num.hexdigest()
@property
def save(self):
if self.get_obj_by_id(self.id):
print('')
raise PermissionError('对象已存在')
with open(f'{self.file_path}', 'wb') as fw:
pickle.dump(self, fw)
return '创建成功'
@staticmethod
def get_obj_by_id(id):
get_path = os.path.join(DB_path, f'{id}.pkl')
if not os.path.exists(DB_path):
os.mkdir(DB_path)
if not os.path.exists(get_path):
return False
with open(get_path, 'rb') as f:
msg = pickle.load(f)
return msg.id
aa = MySQL('ccc', 'add')
print(aa.save)
bb = MySQL.get_obj_by_id('c0e3f48daca0263144f9de81c01d2d4f')
print(bb)
02
import math
class Round:
def __init__(self, radii):
self.__radii = radii
self.girth = self.__radii * 2 * math.pi
self.acreage = self.__radii ** 2 * math.pi
def check(obj):
print('周长为;', obj.girth)
print('面积为;', obj.acreage)
while True:
choice = input('输入半径;')
if choice == 'q':
break
choice = float(choice)
o1 = Round(choice)
check(o1)
03
import abc
class Phone:
@abc.abstractmethod
def show(self):
print('显示画面。。。')
@abc.abstractmethod
def communicate(self):
print('进行通话。。。')
@abc.abstractmethod
def photograph(self):
print('拍摄照片。。。')
class Iphone(Phone):
def show(self):
print('显示画面。。。')
def communicate(self):
print('进行通话。。。')
def photograph(self):
print('拍摄照片。。。')