day07 类的进阶,socket编程初识
类的静态方法:
正常:


添加静态方法:

就会变成一个函数,不会自动传self 参数,不会调用类的变量和实例的变量 不在需要self

名义上归类管,但是它就是一个单独的函数,不在需要传入self,想怎么写就怎么写
类似于:



就是一个os类里有许多的可用的函数方法,相当于一个工具包
静态方法只对下面一个函数有作用, 其实就是一个装饰器










正确使用方法:

但是不能传变量,想传变量:


使用方法:

真正赋值:


想删除此变量 就删除

整合:




类的特殊成员方法:

写好注释



返回C 是从哪里导入的

输出类


不加这个方法:

加入__call__ 方法:

或者这样写:

运行结果:


以一个字典的形式把类里的属性,方法 打印出来


通过实例调用,只打印实例变量:

作用: 可以查看实例里有什么变量(属性)

没有的话:

加上:



设置:

获取:

删除: 不是真的删除,就是走到这一步,执行这个函数




Foo 就是来自于type Foo 后面的类就是type 类

特殊方法创建类:

实例化:



new 方法 是自动执行并先于init执行




call 来创建 new


反射:
示例:

实现: 但是这样不行,所以需要用反射实现

正确方法:
1 通过 判断有没有这个方法:

用反射实现:
调用

如果没有就没有,报错,所以需要提前加一个判断

来真正调用: 加上()

真正正常使用:

来定义一个:



实践:
class Dog(object):
def __init__(self,name):
self.name = name
def eat(self):
print("{_who} is eat food".format(_who=self.name))
d1 = Dog("dang")
print(d1.name)
chose = input("input:>>").strip()
#判断实例里是否有此方法或者属性
# if hasattr(d1,chose):
# print("hava",chose)
# else:
# print("not have",chose)
#如果有这个方法执行这个方法(属性的话直接使用,不能执行)
if hasattr(d1,chose):
func = getattr(d1,chose)
func()
else:
print("not have", chose)
# #改变实例中的属性
# if hasattr(d1,chose):
# setattr(d1,chose,"heheh")
# else:
# print("not have",chose)
#
#删除实例中的属性
if hasattr(d1,chose):
delattr(d1,chose)
else:
print("not have",chose)
print(d1.name)
hasattr 判断实例中是否有此属性或方法

getattr 获取属性 或 者执行方法

setattr 改变属性(变量)

delattr 删除属性

可以 判断 有就取出来,没有就设置然后出去来

异常处理:
使用 as 获取错误结果:

处理多个异常:



用在最后面抓所有未知错误:



finally 不管有没有错都执行

常见的几种异常:

自定义错误:

触发自己写的异常:


Socket 网络编程


协议类型:

套接字类型

示例:
client:
import socket
client = socket.socket()
client.connect(('localhost',6868))
client.send(b"Hello world!")
data = client.recv(1024)
print('recv:',data)
client.close()

server:
import socket
server = socket.socket()
server.bind(('localhost',6868)) #绑定要监听的地址
server.listen() #开始监听
print('我要开始等电话了')
conn,addr = server.accept() #等待电话打过来,接收客户端地址
print(conn,addr)
print('电话来了')
data = conn.recv(1024)
print('recv:',data)
conn.send(data.upper())
server.close()


所有数据传输必须用byte 格式


循环接收一个客户端

改进 循环接收多个客户端而不推出

最大允许多个连接,在一个通讯时,可以有几个等待的 在排队的 一般写5个 不到10个

不能send 空 必须做一个判断 如果是空就不发


day07 类的进阶,socket编程初识的更多相关文章
- Python学习笔记——基础篇【第七周】———FTP作业(面向对象编程进阶 & Socket编程基础)
FTP作业 本节内容: 面向对象高级语法部分 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 参考:http://www.cnblogs.com/wupeiqi/ ...
- socket编程初识
一.socket 1.socket层 2.socket的理解 写python代码的时候socket就像是一个模块,通过import导入,通过调用模块中的方法建立两个进程之间的连接和通信. Socket ...
- C# Socket编程(5)使用TCP Socket
TCP 协议(Transmission Control Protocol,传输控制协议)是TCP/IP体系中面向连接(connection oriented)的传输层(transport layer) ...
- socket技术详解(看清socket编程)
socket编程是网络常用的编程,我们通过在网络中创建socket关键字来实现网络间的通信,通过收集大量的资料,通过这一章节,充分的了解socket编程,文章用引用了大量大神的分析,加上自己的理解,做 ...
- 【转】C# Socket编程(5)使用TCP Socket
[转自:https://www.cnblogs.com/IPrograming/archive/2012/10/18/CSharp_Socket_5.html] TCP 协议(Transmission ...
- python学习道路(day8note)(抽象类,类的方法,异常处理,socket编程)
1.#面向对象 #抽象接口 === 抽象类 #就是架构师给你一个架子,你们去写,如果满足不了直接报错 #python2 print("python2---抽象类".center(2 ...
- C# Socket编程(4)初识Socket和数据流
经过前面基础知识作为背景,现在对Socket编程进行进一步的学习.在System.Net.Socket命名空间提供了Socket类,利用该类我们可以直接编写Socket的客户端和服务的的程序.但是直接 ...
- Python之路,Day8 - Socket编程进阶
Python之路,Day8 - Socket编程进阶 本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台 ...
- python进阶---Python中的socket编程
初识socket编程 一.前言 socket基于C\S架构(客户端\服务端)的编程模型,在Python中是以socket模块存在的. Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是 ...
随机推荐
- jdk动态代理和cglib动态代理的区别
一.原理区别: java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理. 而cglib动态代理是利用asm开源包,对代理对象类的class文件 ...
- 【简问】一些个人不会的问题,收到解答经核实OK的会在下方附注答案
1.p标签内放行内块(如,input)适宜么(已知p是块元素,但p内不宜放置div)? 2.如何单独设置文字下划线颜色? 3.行内元素可以定位吗? 4.支持 margin:0 auto; 的元素类型有 ...
- 织梦修改文档HTML默认保存路径
\data\config.cache.inc.php $cfg_arcdir = '/a'; 改为 $cfg_arcdir = '/';
- SpringMVC+Thymeleaf 简单使用
一.简介 1.Thymeleaf 在有网络和无网络的环境下皆可运行,而且完全不需启动WEB应用,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果.浏览器解释 h ...
- 动态加载sd卡或者手机内置存储卡的so库
package com.wsc.utils; import android.content.Context; import com.wsc.common.Entrance; import com.ws ...
- 机器学习经典算法之SVM
SVM 的英文叫 Support Vector Machine,中文名为支持向量机.它是常见的一种分类方法,在机器学习中,SVM 是有监督的学习模型. 什么是有监督的学习模型呢?它指的是我们需要事先对 ...
- LeetCode Happy Number 开心数字
题意: 给出一个整数n,判断其是否为幸运数. 规则是,将n按十进制逐位拆出来后,每个位各自进行取平方,再将这些平方数求和作为新的数字n.若最后n=1,就是幸运数. 思路: 计算例子:n=47,接着n= ...
- python基础教程总结13——网络编程,
1.网络设计模块 1.1 socket模块 根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认. 1)服务器监听:是服务器端套接 ...
- cesium模型加载-加载fbx格式模型
整体思路: fbx格式→dae格式→gltf格式→cesium加载gltf格式模型 具体方法: 1. fbx格式→dae格式 工具:3dsMax, 3dsMax插件:OpenCOLLADA, 下载地址 ...
- Unity四元素运用之风向标跟随箭头
using System.Collections; using System.Collections.Generic; using UnityEngine; public class WindVane ...