1. 程式人生 > >面向對象聯系(定義mysql類)

面向對象聯系(定義mysql類)

pre most trac obj root enc dict 讀取 路徑

練習1:定義MySQL類

要求:

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方法用來從文件中反序列化出對象

# -*- coding: utf-8 -*-
import time
import hashlib import json import time import sys import os FILE = user_info.json def user(): return json.load(open(FILE)) user_info = user() class Mysql: def __init__(self,host,port): self.host = host self.port = port self.id = Mysql.create_id(self) def create_id(self): m
= hashlib.md5(str(time.clock()).encode(utf-8)) self.id = m.hexdigest() return m.hexdigest() def save(self): for root, dirs, files in os.walk(os.path.dirname(__file__)): if self.id in files: raise FileNotFoundError(文件已存在) json.dump(self.
__dict__,open(self.id,w,encoding=utf-8)) def get_obj_by_id(self,id): dic1 = json.load(open(id)) print(dic1) stu1 = Mysql(127.0.0.1,3306) print(stu1.id,stu1.host,stu1.port) stu1.get_obj_by_id(f0fbad80768437dfabc5050e0ebd4504) stu1.save() stu2 = Mysql(user_info[host],user_info[port])# print(stu2.id,stu2.host,stu2.port) stu2.save() #輸出 Traceback (most recent call last): 30565a8911a6bb487e3745c0ea3c8224 127.0.0.1 3306 File "G:/python練習/網絡編程/class_練習題.py", line 36, in <module> stu1.save() {host: 127.0.0.1, port: 3306, id: f0fbad80768437dfabc5050e0ebd4504} File "G:/python練習/網絡編程/class_練習題.py", line 26, in save raise FileNotFoundError(文件已存在) FileNotFoundError: 文件已存在

面向對象聯系(定義mysql類)