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)
  • 相关阅读:
    又来项目了,星座运势widget
    ubuntu下编译android源代码
    Android UI,界面辅助设置工具,可随意拖动控件,比google官方提供的方便
    Android 1.5原生软件开发SDK公布
    REST转自WIKI
    Android SDK 1.5 包装索引
    android google market FreshFace上线了,大家都试用试用,反正免费的
    JSON
    ubuntu命令
    网站支付宝接口错误代码:TRADE_DATA_MATCH_ERROR怎么处理? uz
  • 原文地址:https://www.cnblogs.com/momoon/p/12920320.html
Copyright © 2011-2022 走看看