day21

今日作业

'''
0、课堂代码理解,并敲两遍以上 (技术的牛逼是靠量的积累)

1、定义MySQL类(参考答案:http://www.cnblogs.com/linhaifeng/articles/7341177.html#_label5)
	  1.对象有id、host、port三个属性
	  
	  2.定义工具create_id,在实例化时为每个对象随机生成id,保证id唯一
	  
	  3.提供两种实例化方式,方式一:用户传入host和port 方式二:从配置文件中读取host和port进行实例化
	  
	  4.为对象定制方法,save和get_obj_by_id,save能自动将对象序列化到文件中,文件路径为配置文件中DB_PATH,文件名为id号,保存之前验证对象是否已经存在,若存在则抛出异常,;get_obj_by_id方法用来从文件中反序列化出对象
	  
	  
import os
import pickle
import random
import  settings
class MySQL:
    def __init__(self,host,port):
        self.id=self.create_id()
        self.hos=host
        self.port=port

    @staticmethod
    def create_id():
        return str(random.random())




    def save(self):
        if not self.is_exists:
            raise TypeError('文件不存在')
        file_path=r'%s%s%s' %(settings.DB_PATH,os.sep,self.id)
        pickle.dump(self,open(file_path,'wb'))

    @property
    def is_exists(self):
        tag=True
        files=os.listdir(settings.DB_PATH)
        for file in files:
            file_abspath=r'%s%s%s' %(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):
        DB_PATH=os.path.join(os.path.dirname(__file__),str(id))
        res=pickle.load(open(DB_PATH,'rb'))

        return res
    @classmethod
    def from_conf(cls):
        print(cls)
        return cls(settings.HOST,settings.PORT)



conn=MySQL.from_conf()
conn.save()

2、定义一个类:圆形,该类有半径,周长,面积等属性,将半径隐藏起来,将周长与面积开放
import  math
class Circle:
    def __init__(self,r,):
        self.__r=r

    def A(self):
        print(*math.pi*self.__r**2)

    def P(self):
        print(2*math.pi*self.__r*)


3、使用abc模块定义一个phone抽象类 并编写一个具体的实现类
import abc
class Phone(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def city(self):
        pass
    @abc.abstractmethod
    def country(self):
        pass

class Myphone(Phone):
    def city(self):
        pass
    def country(self):
        pass
    
my=Country()

4、着手编写选课系统作业:http://www.cnblogs.com/linhaifeng/articles/6182264.html#_label15

'''
posted @ 2019-10-11 22:13  鸿鸿1  阅读(98)  评论(0编辑  收藏  举报