• W7_staticmethod_classmethod_property_反射_exception_socket


    w7_staticmethod_TryExcept_socket

    94.第03章节-Python3.5-静态方法、类方法、属性方法

    静态方法:只是看似归类管理,实际上在静态方法里访问不了类或实例中的任何属性
    类方法:只能访问类变量,不能访问实例变量
    属性方法:把一个方法变成一个静态属性

    97.第06章节-Python3.5-深入讲解类的特殊成员方法__new__等

    类的另一种构造:

    def func(self):
        print("hello %s" % self.name)
    
    def __init__(self,name,age):
        self.name = name
        self.age = age
    
    Foo = type("Foo",(object,), {"talk":func , "__init__":__init__})
    f = Foo("Chrn",22)
    f.talk()
    

    返回顶部

    98.第07章节-Python3.5-反射详解1

    hasattr(obj.name_str) #判断一个对像obj里是否有对应的name_str字符串的方法
    getattr(obj.name_str) #根据字符串去获取obj对象里的对应的方法的内存地址

    class Dog(object):
        def __init__(self,name):
            self.name = name
        def eat(self,food):
            print("%s is eating %s" % (self.name, food))
    d = Dog("no1_dog")
    choice = input(">>:").strip()
    if hasattr(d,choice):
        func = getattr(d,choice)
        func("baozi")
    setattr(obj,"string",v) # is equivalent to ''obj.string = v''
    delattr(obj,y)  # is equivalent to ''del obj.y''
    

    返回顶部

    100.第09章节-Python3.5-异常处理TryExcept

    异常语法

    data = {}
    list = [1,2]
    
    try:
        data["name"]
        list[3]
        open("fdsafdf")
        a = 1
    except KeyError as e:
        print("字典没有这个key", e)
    except IndexError as e:
        print("列表没有这个索引",e)
    except (KeyError,IndexError) as e:  #把多项合并的写法,多项异常执行同一操作
        print("出错了:", e)
    except Exception as e:
        print("未知错误",e)
    else:
        print("一切正常")
    finally:
        print("不管正常与否,都得执行")
    
    
    #python2.7的写法:中间使用逗号隔开
    #except KeyError, e:
    

    自定义异常

    class Wuexcetion(Exception):
        def __init__(self,msg):
            self.msg = msg
        def __str__(self):
            return self.msg
    
    # db_conn_e = Wuexcetion("test db connection exception")
    # print(db_conn_e)
    
    conn_status = 2
    # conn_status = 1
    
    try:
        if conn_status > 1:
            raise Wuexcetion("数据库没有连接上")
        else:
            pass
    except Wuexcetion as e:
        print(e)
    

    返回顶部

    101.第10章节-Python3.5-网络编程Socket介绍1

    TCP:


    socket:


    refer:https://www.cnblogs.com/Eva-J/articles/8244551.html

    102.第11章节-Python3.5-网络编程Socket介绍2

    socket_server

    import socket
    server = socket.socket()
    server.bind(('localhost',6969))
    server.listen()
    print("我要开始等电话了")
    conn,add = server.accept()
    print("电话打进来了")
    data = conn.recv(1024)
    print("recv:",data)
    conn.send(data.upper())
    conn.close()
    server.close()
    
    

    socket_client

    import socket
    client = socket.socket()
    client.connect(('localhost',6969))
    client.send(b"hello world")
    data = client.recv(1024)
    print("recv:",data)
    client.close()
    

    返回顶部

    103.基于udp的socket服务

    udp_server.py

    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    sk.bind(("127.0.0.1",6969))
    while True:
        msg, addr = sk.recvfrom(1024)
        print(msg)
        info = input("server:")
        info = ("server:" + info).encode("utf-8")
        sk.sendto(info,addr)
    sk.close()
    

    udp_client1.py

    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    ip_port = ("127.0.0.1",6969)
    while True:
        info = input("client1:")
        info = ("client1:" + info).encode("utf-8")
        sk.sendto(info, ip_port)
        msg,add = sk.recvfrom(1024)
        print(msg)
    sk.close()
    
    

    udp_client2.py

    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    ip_port = ("127.0.0.1",6969)
    while True:
        info = input("client2:")
        info = ("client2:" + info).encode("utf-8")
        sk.sendto(info, ip_port)
        msg,add = sk.recvfrom(1024)
        print(msg)
    sk.close()
    

    返回顶部

    145.黏包现象

    黏包现象只发生在tcp协议中:

    1.从表面上看,黏包问题主要是因为发送方和接收方的缓存机制、tcp协议面向流通信的特点。
    2.实际上,主要还是因为接收方不知道消息之间的界限,不知道一次性提取多少字节的数据所造成的
    黏包成因:https://www.cnblogs.com/Eva-J/articles/8244551.html

    返回顶部

  • 相关阅读:
    C#GridViewExport帮助类,美化导出
    C#EXCEL 操作类--C#DataToExcel帮助类
    C#EXCEL 操作类--C#ExcelHelper操作类
    VS2010 项目引用了DLL文件,也写了Using,但是编译时提示:未能找到类型或命名空间名称 <转>
    FPGA Verilog HDL 系列实例--------步进电机驱动控制
    C++使用VARIANT实现二维数组的操作
    VS2010+VMWare8+VisualDDK1.5.6 创建并调试你的第一个驱动程序
    USB编程研究之二(常见设备类型的GUID)
    C++——CString用法大全
    C++ 如何有效地使用对话框
  • 原文地址:https://www.cnblogs.com/rootid/p/9504331.html
Copyright © 2020-2023  润新知