面向对象联系(定义mysql类)

Posted mjiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象联系(定义mysql类)相关的知识,希望对你有一定的参考价值。

练习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类)的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段9——JS中的面向对象编程

GO语言面向对象06---面向对象联系

面向对象

基础

JAVA方法的定义

面向对象联系