zoukankan      html  css  js  c++  java
  • 面向对象之魔术方法

    # !/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # @Time : 2020/5/19 22:00
    # @Author : "小多肉"
    # @Email : 1021181701@qq.com
    # @File : 面向对象之魔术方法.py
    # @Software: PyCharm
    
    """TODO:
    第一题:基于pymysql模块实现一个数据库操作的上下文管理器(目的:实现自动关闭连接对象和游标)
    
    第二题:自定义一个列表类型,实现对象可以之间可以 使用 -  来进行操作
    # 要求:如果一个对象减去另一个对象,则把和被减对象中一样的数据给删除掉
    # 如下:
    li1 = MyList([11, 22, 33, 44])
    li2 = MyList([1, 22, ])
    res = li1 - li2
    # res 打印的结果为[11,33,44]
    """
    import pymysql
    
    
    class DBContext:
    
        def __init__(self,
                     host=None,
                     port=3306,
                     user='root',
                     password='',
                     charset='utf8',
                     database=None,
                     **kwargs
                     ):
            self.conn = pymysql.connect(host=host,
                                        port=port,
                                        user=user,
                                        password=password,
                                        charset=charset,
                                        database=database,
                                        **kwargs
                                        )
    
            self.cursor = self.conn.cursor()
    
        def __enter__(self):
    
            return self.conn, self.cursor
    
        def __exit__(self, exc_type, exc_val, exc_tb):
            self.cursor.close()
            self.conn.close()
    
    
    class ListSub:
    
        def __init__(self,li:list):
            self.li = li
    
        def __sub__(self, other):
            for i in other.li:
                if i in self.li:
                    self.li.remove(i)
            return self.li
    
        def __add__(self, other):
            return self.li + other.li
    
    
    if __name__ == '__main__':
        print("----------------------第一题------------------------")
        with DBContext(host="192.168.5.20",password="love520",database="love") as (my_conn,my_cursor):
            sql = "select to_date('2020-12-01' ,'YYYY-MM-DD') - to_date('2020-05-20','YYYY-MM-DD') from dual;"
            my_cursor.execute(sql)
            my_conn.commit()
            data = my_cursor.fetchone()
            print(data)
    
        print("----------------------第二题------------------------")
        li1 = ListSub([11, 22, 33, 44])
        li2 = ListSub([1, 22, ])
        res = li1 - li2
        print(res)
        res2 = li1 + li2
        print(res2)
  • 相关阅读:
    虚拟化、云计算与超融合的简单总结
    期货量化总结与思考
    易盛内外通用版交易API转websocket
    门诊叫号系统系列-1.语音叫号 .net c#
    六线顺上黑马选股和切割线选股法该如何操作?
    我的总结--强势股的短线战法精髓
    MACD头肩顶/底 = 驱动五浪
    有效突破的三三原则
    5日均线--攻击线
    10日均线--操盘线
  • 原文地址:https://www.cnblogs.com/momoon/p/12920320.html
Copyright © 2011-2022 走看看