day21作业

创建一个mysql类

import uuid
import os
import settings
import pickle
class MySQL:
    def __init__(self,host,port):
        self.host=host
        self.port=port
        self.id=self.create_id()

    def create_id():
        return str(uuid.uuid1())
    def save(self):
        if not self.is_exists:
            raise PermissionError('对象已存在')
        file_abspath=os.path.join(settings.DB_PATH,f'{self.id}.pickle')
        pickle.load(open(file_abspath,'wb'))
    @property
    def is_exists(self):
        tag=True
        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=False
                break
        return tag
    @staticmethod
    def get_obj_by_id(id):
        file_abspath=f'{settings.DB_PATH}{os.sep}{id}'
        return pickle.load(open(file_abspath,'rb'))
    @classmethod
    def from_conf(cls):
        return cls(settings.HOST, settings.PORT)

定义一个类:圆形,该类有半径,周长,面积等属性,将半径隐藏起来,将周长与面积开放

class Round:
    def __init__(self, radius):
        self.__radius = radius
        self.perimeter = self.radius_perimeter
        self.area = self.radius_area

    @property
    def radius_area(self):
        return 3.14 * self.__radius * self.__radius

    @property
    def radius_perimeter(self):
        return 2 * 3.14 * self.__radius

使用abc模块定义一个phone抽象类 并编写一个具体的实现类

import abc
import time
class Phone(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def call(self):
        pass
    @abc.abstractmethod
    def msg(self):
        pass
    @abc.abstractmethod
    def clock(self):
        pass


class Iphone(Phone):
    number=12345678910
    def __init__(self,user_name,password):
        self.user_name=user_name
        self.password=password
    def call(self):
        user_inp=input('请输入电话号码:').strip()
        if not user_inp==self.number:
            print('电话拨打中')
            time.sleep(3)
            print('您呼叫的电话已关机')
            return
        time.sleep(3)
        print('请输入正确号码')
    def msg(self):
        user_inp=input('请输入要发送的内容:').strip()
        user_inp1=input('请输入联系人:').strip()
        print('消息发送中')
        time.sleep(1)
        print('消息发送成功')
    def clock(self):
        user_inp = input('请输入设定时间:').strip()
        print('设置成功')
        tim=int(user_inp)
        time.sleep(tim)
        print('滴滴滴滴滴')

    def withdraw(self):
        while True:
            print('''
            1 打电话
            2 发消息
            3 闹钟
            q 退出''')
            func_dic={
                '1':self.call,
                '2':self.msg,
                '3':self.clock
            }
            choice=input('请输入你想要的功能:').strip()
            if choice=='q':
                return
            if not choice in func_dic:
                print('请重新输入')
                continue
            func_dic.get(choice)()

a=Iphone('cyt',123)
a.withdraw()
posted @ 2019-10-11 21:20  lucky_陈  阅读(117)  评论(0编辑  收藏  举报