zoukankan      html  css  js  c++  java
  • 2、基础知识点回顾

    `# 一、Python中的魔法方法

    __init__:类实例化时触发
    __str__:打印对象时触发
    __call__:对象()触发,类也是对象,如果是类(),则是类的实例化过程对用元类的__call__
    __new__:在类实例化对象时触发,但时在__init__之前先触发
    __del__:del对象在对象回收时触发
    __setattr__,__getttr__:(.拦截方法),当对象.属性赋值时,会调用setattr
    									当对象.属性取值时,会调用getattr
    __getitem__,__setitem__:([]拦截),当对象[]属性赋值时,会调用setitem
    								   当对象[]属性取值时,会调用getitem
    __enter__和__exit__:上下管理器
    

    二、setattr、getattr、setitem、getitem的演示

    ​ 在函数的使用中,可以使用setattr、getattr进行使用.属性的方式进行赋值或者取值

    ​ 使用setitem、getitem进行使用[]实用性的方式进行赋值或者取值

    ​ 取值的时候需要使用return,将值保存,

    ​ 使用反射可以进行判断是否正确

    class Person:
        def __init__(self,name):
            self.name = name
        def __setitem__(self, key, value):
            setattr(self,key,value)     #反射
        def __getitem__(self, item):
            return getattr(self,item)   #反射取值
    p = Person('a')
    p.name = 'ppp'
    p['name'] = 10
    
    print(p.name)
    print(p['name'])
    dic = {'name':'a','age':19}
    
    class Mydic(dict):
        def __setattr__(self, key, value):
            print('对象加点赋值,会触发我')
            self[key]=value
        def __getattr__(self, item):
            print("对象加点取值会触发我")
            return self[item]
    mydic = Mydic(name='b',age=1)
    print(mydic['name'])     #可以使用mydic[]取值,但是无法进行触发
    print(mydic.name)	使用内置getattr取值,需要返回一个return
    mydic.name=99	使用内置setattr进行赋值
    print(mydic.name)
    

    三、上下文管理器

    ​ 上下管理器即使用,with as 在执行的时候会触发__enter__,而在with结束的时候会触发__exit__,进行自动管理

    class Person:
        def __enter__(self):
            print('进入with管理时触发')
            print('进入with语句块时执行')
            return 'oo'
        def __exit__(self, exc_type, exc_val, exc_tb):
            print('退出with时执行')
            print('1', exc_type)
            print('2', exc_val)
            print('3', exc_tb)
    with Person() as p:
        print(p)
    

    四、eq

    ​ 当执行==时,切来那边都是对象时就会触发,不是对象无法比较,会直接报错,

    ​ 第二个对象会传入__eq__中

    class A:
        def __init__(self,x,y):
            self.x = x
            self.y = y
        def __eq__(self, obj):
            print(obj.x)	#打印出第二个对象的值
            if self.x+self.y == obj.x+obj.y:
                return True
            else:
                return False
    a = A(1,2)
    b = A(2,1)
    print(a==b)	当执行==时,会触发__eq__的执行,并且把b传递到eq中,也就是object,==后只要是对象,就可以传进去
    

    五、cookie、session、token

    5.1、相关介绍

    HTTP协议:无状态,无连接,给予请求响应,给予tcp/ip,应用于协议层

    mysql:c/s架构:底层基于socket,自己封装的协议,

    ​ MySQL的客户端:navcate(c++图形化界面,实现了请求和响应)

    ​ pymysql(基于Python语言实现了请求和响应)

    redis:c/s架构,基于socket,自己封装的协议

    docker:c/s架构,基于HTTP协议,使用restfull规范

    elasticsearch:c/s架构,基于HTTP协议,使用restfull规范

    5.2、名词介绍

    cookie:是存在于浏览器的键值对,向服务器发送请求,携带他过去(比较不安全)

    session:是存在于服务器的键值对,放置在内存、文件、MySQL、redis中,都可以

    ​ 缺点是:如果用户量比较大,存储需要消耗大量的服务器资源

    token:就是个字符串(即安全,又可以存个人信息),在个人信息的基础上加密字符串,

    ​ token的使用现在比较广泛,契合了前后端分离

    六、异常处理

    ​ try:防止有可能出现异常的代码

    ​ except:出现异常时,反馈的信息,并且可以区分不同类型的异常分类

    ​ else:显示未出现异常时,需要反馈的信息

    ​ finally:无论是否有异常都会直接执行

    try:
    except   :
    finally:
    else:  什么时候执行
    
    
    try:
        print("xxx")
        # print(1/0)
    except Exception as e:
        print(e)
    else:  # 基本上不会用到
        print("正常执行,没有出异常,会走")
    finally:
        print("我是finally")   # 用于会走,无论是否有异常
    

    七、pymysql的使用

    import pymysql
    
    
    #连接数据库
    conn=pymysql.connect(host='101.133.225.166', user='root', password="123456",database='test', port=3306) #
    # 获取游标
    cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) # 查出来数据是字典格式
    # 操作 定义一个sql
    # sql='select id,name from book'
    # cursor.execute(sql)
    # ret=cursor.fetchall()
    # print(ret)
    # 插入
    # sql='insert into book(id,name) values (%s,%s)'
    # cursor.execute(sql,[3,'lqz'])
    # conn.commit()
    
    # 删除
    # sql='delete from book where name=%s'
    # cursor.execute(sql,['lqz'])
    # conn.commit()
    
    # 更新
    # sql='update book set name=%s where id=%s'
    # cursor.execute(sql,['xxx',1])
    # conn.commit()
    

    `

  • 相关阅读:
    微信小程序-----校园头条详细开发之注册登录
    微信小程序-----校园头条详细开发之首页
    day 99天
    day 98天
    day 97 VUE第一天
    day 96
    day 95天
    day 94 RestFramework序列化组件与视图view
    day 93 Restframwork
    day 92
  • 原文地址:https://www.cnblogs.com/jingpeng/p/13223058.html
Copyright © 2011-2022 走看看