• 小练习


    '''
    定义MySQL类
    1、对象有id、host、port三个属性
    2、定义工具create_id,在实例化时为每个对象随机生成id,保证id唯一
    3、提供两种实例化方式,方式一:用户传入host和port方式  方式二:从配置文件中获取
    4、为对象定制方法,save和get,save能自动将对象序列化到文件中,文件好为id,文件路径为配置
        文件中DB_PATH,;get方法用来从文件中反序列化出对象
    '''
    #知识点:
    #1、str.encode('utf-8') 将字符串转换为字节码   decode()  将字节码转换为字符串
    #2、hashlib.md5()是需要传入字节码类型的,之后调用其digest方法得到其hash值,或者调用其hexdigest()方法得到16进制的hash值
    #3、settings.DB_PATH  :显示该文件的目录 :F:wangkcday07
    #4、os.sep 属性 :表示执行操作系统的文件分隔符
    import settings,hashlib,time,os,pickle
    
    class MySQL:
        def __init__(self,host,port):
            self.id=self.create_id()
            self.host=host
            self.port=port
        @classmethod
        def from_conf(cls):
            return cls(settings.HOST,settings.PORT)
        @staticmethod
        def create_id():
            m=hashlib.md5(str(time.clock()).encode('utf-8'))
            return m.hexdigest
        def save(self):
            file_name=r'%s%s%s' % (settings.DB_PATH,os.sep,self.id)
            pickle.dump(self,open(file_name,'wb'))
        def get(self):
            file_name=file_name=r'%s%s%s' % (settings.DB_PATH,os.sep,self.id)
            return pickle.load(open(file_name,'rb'))
    
    '''
    知识点:
    1、__str__(self) 方法,在实例化对象后,直接打印对象,一般会打印出该对象的内存地址,在该类定义类__str__方法后
        要打印对象首先会找到该方法,该方法会return 一个字符串类型的对象。以从中得到该对象的有用信息
    2、@classmethod用法示例
    3、time.localtime()获得时间后,用t.tm_year,t.tm_mon,t.tm_mday来获得具体的年、月、日
    '''
    import time
    class Date:
        def __init__(self,year,mon,day):
            self.year=year
            self.mon=mon
            self.day=day
        @classmethod
        def now(cls):
            t1=time.localtime()
            return cls(t1.tm_year,t1.tm_mon,t1.tm_mday)
    class EuroDate(Date):
        def __str__(self):
            return 'year:%s,mon:%s,day:%s' % (self.year,self.mon,self.day)
    
    p=EuroDate.now()
    print(p)  #year:2017,mon:6,day:17
    

      

      

  • 相关阅读:
    最近想做的开发配套工具
    nodejs 入门
    MySQL Server 5.6 配置文件my.ini 以及windows上mysql表名区分大小写
    js闭包实例汇总
    javascript深入理解js闭包
    jQuery中$.fn的用法示例介绍
    css3图片旋转
    JS中的prototype
    追求极致--纯css制作三角、圆形按钮,兼容ie6
    CSS 最核心的几个概念
  • 原文地址:https://www.cnblogs.com/wangkc/p/7041122.html
Copyright © 2020-2023  润新知