类+异常处理+初识socket

类的特点:

1.封装-同其他语言

2.继承

py2 经典类深度优先 新式类类名(object)广度优先
py3 都是广度优先

3.多态-python本身无多态 可用方法调用

类:

class 类名(object):    //有括号即为新式类名(现在多用此种)

  code

构造函数:          //用作初始化

def __init__(self,属性):

  self.属性=属性

示例

class Role:
n = 1 #类变量(节省内存)
lis=[]
def __init__(self,name,role,weapon,life_value=100,money=100): #构造函数
self.name=name
self.role=role
self.weapon=weapon
self.__life_value=life_value #私有属性 只有靠方法调用显示
self.money=money def get(self):
print(self.__life_value)
def set(self,life):
self.__life_value=life
def __shot(self): #私有方法 (在前面加__)
print(self.name,"射击!")
def __del__(self): #析构函数(关闭打开的临时文件)
print(self.name,"is dead")

继承:

使子类能使用父类的属性与方法,并在其上重载方法(加功能)

class 子类名(父类名):

  code

当有属性要增加时 必须重载构造函数(不写 则直接调用父类构造函数)

def __init__(self,子类属性):
        super(子类名,self).__init__(父类所有属性)
        self.子类属性=子类属性

例如:

class cat(animal):
def __init__(self,name,age,size):
super(cat, self).__init__(name,age)
self.size=size

多态

当多个类都拥有相同方法,但内部都有所区别时,可用多态减少代码量

class animal(object):
def __init__(self,name,age):
self.name=name
self.age=age class dog(animal):
def __init__(self,name,age,color):
super(dog,self).__init__(name,age)
self.color=color def talk(self):
print(self.name,"is barking") class cat(animal):
def __init__(self,name,age,size):
super(cat, self).__init__(name,age)
self.size=size def talk(self):
print(self.name,"is miaomiaoing") d=dog("lala",12,"黑")
c=cat("nana",21,"大") def nimal(obj):
obj .talk();
nimal(c)
nimal(d)

两个类-cat和dog都有talk()方法 但其中内容有所不同

此时 利用nimal(obj)去传入实例化对象 达到简化代码的效果

反射

1.hasattr(d,choice)   //判断d对象中是否有对应的函数 boolean形 有choice的函数则为true
2.getattr(d,choice)   //根据choice去调用d中的函数 
3.setattr(x,y,z)    // x.y=z 自定义创建类中的对象

##其中d为实例化对象 choice为用户输入的字符串

例:

if(hasattr(d,choice)):     #判断d对象中是否有对应的函数 boolean形 有choice的函数则为true
func=getattr(d,choice) #根据choice去调用d中的函数
func()
   setattr(x,y,z) # x.y=z 自定义创建类中的对象

=======================================================

异常处理

代码示例==

try:
      code
 except(error1,error2) as e: 
     print e
 except exception as e  //用于最后 抓住所有其他错误
 else:
       print(“无错误执行”)
 finally:
       print("无论有没有错都执行")
 
特殊注意: 此处抓取异常用except关键词!
 
===========================================================

Socket网络编程

实现双方通信 client和server

#首先要想实现 保证两者端口相对应

client的代码实现

import socket

client=socket.socket()  #声明socket类型,同时生成socket连接对象
client.connect(("localhost",123))#端口#ip和端口两个数据 但connect只接受一个参数用元组
while True:   mas=input(">>>:")    #用户输入要传递的信息
  if(len(mas)==0):
continue client.send(mas.encode("utf-8")) #所有数据传输接收都用byte格式 data=client.recv(1024) #此处为对方接受到信息后的回复( 收多少数据)  print("recv:",data.decode())
client.close()

server的代码实现

import socket

server=socket.socket()
server.bind(("localhost",123))#绑定端口
server.listen() #监听端口
print("waiting...............")
while True:
#等待电话
conn,addr=server.accept() #返回值两个(conn来电实例,addr来电地址)
print("phone coming!")
while True: data=conn.recv(1024)   #接受来电的信息
print(data.decode())  #此处data为二进制代码 需要解码 if not data:
print("client has lost.....")
break conn.send(data.upper())#收到消息后返还大写 server.close()

此时 实现了 client与server的通信

client发送断开后

server可接受下个 信号指令 实现打电话1-1 挂电话后下一个接上的效果

accept到的有接收实例和地址

conn为接收的实例(接收对象)

bind绑定ip与端口

下面给出自己附加的文件传输代码 :

client

import socket
client=socket.socket() client.connect(("localhost",123))
f1=open("doc","r",encoding="utf-8")
for line in f1:
print(line)
#所有数据传输接收都用byte格式
client.close()

server:

import socket

server=socket.socket()
server.bind(("localhost",123))server.listen()
print("waiting...............")
with open("copy", "a", encoding="utf-8") as f2:
while True: conn,addr=server.accept()
print("phone coming!")
while True: data=conn.recv(1024)
f2.write(data.decode()) #写入文件以字符串形式
print(data.decode()) if not data:
print("client has lost.....")
break
server.close()

day9学python 类+异常处理+初识socket的更多相关文章

  1. 再学python类(终结篇)

    续写 初学python类,这几天吃坏东西了,拖着虚弱的身躯写的.有些乱请各位看官海涵. 声明:本人编程新手,还在学习中.所表述的东西都是基础语法之类的,分享我的学习笔记.还望多多指点,我一定虚心接受. ...

  2. python 网络内容: 初识socket

    一 C\S架构,客户端服务端架构 客户端(client) : 享受服务端提供的服务 服务端(server) : 给客户端提供服务 B\S 浏览器和服务端 B(browser) 二 网络通信的整个流程( ...

  3. 【学习笔记】--- 老男孩学Python,day16-17 初识面向对象,类名称空间,查询顺序,组合

    面向过程 VS 面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的复 ...

  4. python学习笔记 - 初识socket

    socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...

  5. 【学习笔记】--- 老男孩学Python,day10, 初识函数 形参、实参

    函数:对功能的封装语法: def 函数名(形参): 函数体 函数名(实参) 函数名:命名规则和变量一样 函数的返回值: return, 函数执行完毕. 不会执行后面逻辑 1. 如果函数中不写retur ...

  6. Python 第八篇:异常处理、Socket语法、SocketServer实现多并发、进程和线程、线程锁、GIL、Event、信号量、进程间通讯

    本节内容: 异常处理.Socket语法.SocketServer实现多并发.进程和线程.线程锁.GIL.Event.信号量.进程间通讯.生产者消费者模型.队列Queue.multiprocess实例 ...

  7. day10学python socket用户交互+MD5加密

    socket用户交互+MD5加密 利用socket从client传输文件指令于server 再返还字节大小与内容 socketserver的使用(重要) 注意: ##client.recv(1024) ...

  8. 简学Python第六章__class面向对象编程与异常处理

    Python第六章__class面向对象编程与异常处理 欢迎加入Linux_Python学习群  群号:478616847 目录: 面向对象的程序设计 类和对象 封装 继承与派生 多态与多态性 特性p ...

  9. python的异常处理及异常类定义

    python的异常处理语法和大多数语言相似: try: try块的语句... except exceptiontype1 as var:#使用as语句获得本次捕获到的异常的实例var except块语 ...

随机推荐

  1. axis2 webService开发指南(2)

    1  Axis2的简单WebService示例 1.1 新建一个web工程,创建一个类Greeting,用于当作webservice服务 代码如下: package amyservices; impo ...

  2. EMC存储同时分配空间到两台服务器路径不一致-双机盘符不一致

    以下方式将i盘盘符换成g盘,g盘盘符换成i emcpadm rename -s emcpoweri -t emcpowerj emcpadm rename -s emcpowerg -t emcpow ...

  3. springboot启动过程(3)-refresh方法

    1  springboot在启动的时候,会调用run方法,创建环境设置spring容器,其中包含refresh方法,完成配置类解析,各种beanFactoryPostProcess和beanPostP ...

  4. Ros学习——Cmakelists.txt文件解读

    1.过程 .Required CMake Version (cmake_minimum_required) //CMake 需要的版本 .Package Name (project()) //#定义工 ...

  5. Mule ESB 安装基本配置要求

    Hardware Requirements* 2GHz, dual-core CPU, or 2 virtual CPUs in virtualized environments 2GB of RAM ...

  6. ajax+servlet 简易时间效果

    <!DOCTYPE html> <html> <head> <title>index.html</title> <meta name= ...

  7. Java 程序员最喜欢的 11 款免费 IDE 编辑器

    Java开发人员需要花费大量的时间埋头于Java代码中,使用各种不同的IDE(Intergrated Development Environment)来开发Java代码,所以下面我将为大家介绍11个不 ...

  8. Golang 之 Qrcode 二维码

    二维码大行其道,尤其 qrcode ,怎么能少了大golang 呢. follow me . 1.引用 go get github.com/skip2/go-qrcode 2.写 package ma ...

  9. hdu 4946 Area of Mushroom (凸包,去重点,水平排序,留共线点)

    题意: 在二维平面上,给定n个人 每个人的坐标和移动速度v 若对于某个点,只有 x 能最先到达(即没有人能比x先到这个点或者同时到这个点) 则这个点称作被x占有,若有人能占有无穷大的面积 则输出1 , ...

  10. ES5、6、7浅析

    ECMA Script 它是一种由ECMA组织(前身为欧洲计算机制造商协会)制定和发布的脚本语言规范 而我们学的JavaScript是ECMA的实现, 但术语ECMAScript和JavaScript ...