python-day7-静态方法、类方法、属性方法、特殊成员方法、反射、异常处理、socket
@特殊方法、异常处理、反射、socket
@类
属性
实例变量
类变量
私有属性__var
方法
构造方法,
析构函数(python自带,不写也有,写了相当与重构)
私有方法
继承
继承
组合
@7.2继承及组合!!
@属性方法(高级方法,不用也能干活):把一个方法变成一个静态属性,不能用括号,不可以赋值。
@property #attribute
def eat(self):
d.eat
@如果想赋值,在上述函数下加:
@eat.setter
def eat(self,food):
print("set to food:",food)
self.__food = food
@删除
普通属性:del d.__food
静态属性:
@eat.deleter
def eat(self):
del self.__food
@http://www.cnblogs.com/alex3714/articles/5213184.html
航班、类的特殊成员
@基类是type类的一个实例。
@ 创建实例时,__new__ 函数出发__init__,默认就有,可以创建覆盖,一般不用。
@反射(重要,测试一下)
def bulk(self):
print("%s is yelling...." %self.name)
class Dog(object):
def __init__(self,name):
self.name = name
def eat(self,food):
print("%s is eating..."%self.name,food)
d = Dog("NiuHanYang")
choice = input(">>:").strip()
if hasattr(d,choice):
getattr(d,choice)()#判断有这个函数名,执行函数
else:
setattr(d,choice,bulk) #d.talk = bulk,将外面的函数装到实例中
func = getattr(d, choice)
func(d)
删除:delattr(d,choice)
@异常处理
except xxxError as e:
print(e)
except Exception as e:#所有错抓,可以先except一个错误,然后再继续抓所有错误。
以上都可打印出错误名称,但是遇到缩进等问题还是会报错,此时只用except:
@常见异常,只看常用的http://www.cnblogs.com/wupeiqi/articles/5017742.html(这是py2版本)
@自定义异常:
class AlexError(Exception):
def __init__(self, msg):
self.message = msg
try:
raise AlexError('数据库连不上')
except AlexError as e:
print(e)
@@@socket
@ip-port相当于总机,一共65535个;端口相当于分机;
@http://www.cnblogs.com/alex3714/articles/5227251.html
@地址簇:TCP/IP的更底层,即网络层
socket.AF_UNIX unix没有网卡,本机进程间通信
socket.AF_INET IPV4
socket.AF_INET6 IPV6
@洪水攻击,超多并发冲击网站,我们的网站一般也就几万并发能力,超过后会拒绝访问。
A发起对B的请求,B返回但是A因为是伪造的ip所以接收不到,B就会等待A的反馈几十秒,从而挂起链接。A不停的发起伪造地址头的请求,B会激增链接挂起量。
@@@socket通信案例
@#客户端
import socket
client = socket.socket() #声明socket类型,同时生成socket连接对象
client.connect(('localhost',6969))#?,端口
while True:
msg = input(">>:").strip()
if len(msg) == 0:continue
client.send(msg.encode("utf-8"))#只能接受ascc码的byte类型数据,不能send空
data = client.recv(10240)
print("recv:",data.decode())
client.close()
@服务器端
import socket
server = socket.socket()
server.bind(('localhost',6969)) #绑定要监听端口
server.listen(5) #监听,最大挂起排队数
print("我要开始等电话了")
while True:
conn, addr = server.accept() # 等电话打进来(链接的标记位,地址)
# conn就是客户端连过来而在服务器端为其生成的一个连接实例
print(conn, addr)
print("电话来了")
count = 0
while True:
data = conn.recv(1024)#1024个b,不能用server.recv(1204)来接收
print("recv:",data)
if not data:
print("client has lost...")
break
conn.send(data.upper())
count+=1
if count >10:break
server.close()
@@@看到
7-13-31
python-day7-静态方法、类方法、属性方法、特殊成员方法、反射、异常处理、socket的更多相关文章
- python静态方法类方法属性方法
Python的静态方法和类成员方法都可以被类或实例访问,两者概念不容易理清,但还是有区别的: 1)静态方法无需传入self参数,类成员方法需传入代表本类的cls参数: 2)从第1条,静态方法是无法访问 ...
- python isinstance和issubclass,区分方法和函数,反射
一.isinstance和issubclass 1.isinstance class Animal: def eat(self): print('刚睡醒吃点儿东西') class Cat(Animal ...
- 面向对象【day08】:静态方法、类方法、属性方法(九)
本节内容 概述 静态方法 类方法 属性方法 总结 一.概述 前面我们已经讲解了关于类的很多东西,今天讲讲类的另外的特性:静态方法(staticmethod).类方法(classmethod).属性方法 ...
- Python Day7
概述 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 静态方法 通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法 ...
- python 面向对象静态方法、类方法、属性方法、类的特殊成员方法
静态方法:只是名义上归类管理,实际上在静态方法里访问不了类或实例中的任何属性. 在类中方法定义前添加@staticmethod,该方法就与类中的其他(属性,方法)没有关系,不能通过实例化类调用方法使用 ...
- Python面向对象静态方法,类方法,属性方法
Python面向对象静态方法,类方法,属性方法 属性: 公有属性 (属于类,每个类一份) 普通属性 (属于对象,每个对象一份) 私有属性 (属于对象,跟普通属性相似,只是不能通过对象直接访问) 方法: ...
- Python基础(10)——类进阶(静态方法、类方法、属性方法)
以下方法为高级方法,一般来说没什么卵用 1.静态方法 @staticmethod 相当于把类内的函数从类内独立出来,只是名义上归类管,实际上不可以调用类内的变量和函数 通过@staticmethod装 ...
- 【面试必问】python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别
[面试必问]python实例方法.类方法@classmethod.静态方法@staticmethod和属性方法@property区别 1.#类方法@classmethod,只能访问类变量,不能访问实例 ...
- Python 静态方法、类方法和属性方法
Python 静态方法.类方法和属性方法 静态方法(staticmethod) staticmethod不与类或者对象绑定,类和实例对象都可以调用,没有自动传值效果,Python内置函数staticm ...
- python中静态方法、类方法、属性方法区别
在python中,静态方法.类方法.属性方法,刚接触对于它们之间的区别确实让人疑惑. 类方法(@classmethod) 是一个函数修饰符,表是该函数是一个类方法 类方法第一个参数是cls,而实例方法 ...
随机推荐
- Jenkins可持续集成项目搭建——配置Jenkins基本设置 & 运行脚本报错点
一.系统管理->全局工具配置:配置JDK.GIT: 二.项目配置-部署源码管理的远程地址 三.项目配置-构建触发器(以Windows平台举例) 构建项目时,会自动分配一个运行空间(D:\Prog ...
- vue-cli项目在IE下运行钩子函数抛出异常“ReferenceError: “Promise”未定义"”的解决办法
兼容IE是个坑,低版本IE很多都没法跑起来 问题现象:vue-cli项目在IE下运行,会在钩子函数出现 ReferenceError: “Promise”未定义 解决办法: step1:安装最新的we ...
- Hot Chocolate 一个.net 平台的graphql 框架
在看昨天发布的新版技术雷达中,看到了一个.net 的graphql 框架Hot Chocolate 还是比较激动,尽管好久不搞 .net 了,但是这个框架还是值得看看的,后边学习下 参考资料 http ...
- form表单图片上传
1.前端页面 <div class="tkDiv" id="addLOGO" style="display:none;z-index:12;wi ...
- vue2-通过axios实现数据请求
1.通过axios实现数据请求 vue.js默认没有提供ajax功能 所以使用vue的时候,一般都会使用axios的插件来实现ajax与后端服务器的数据交互. 注意,axios本质上就是javascr ...
- mysql数据备份及恢复
备份工具 mysqldump mysqldump是mysql和mariadb上最好的备份工具之一,免费开源. mysqldump 首先查询每个数据库和每个表的结构与数据,然后把查出的所有内容导出到文本 ...
- 在图像中随机更改像素值程序——matlab
I=imread('C:\Users\wangd\Desktop\result3.png'); % m = rgb2gray(I); % r = unidrnd(,,); %产生一个1*100的数组, ...
- VS2012统计代码量
第一步:打开项目 第二步:CTRL+SHIFT+H 选择在文件中查找,输入 表达式:b*[^:b#/]+.*$,如下图所示: 第三步:单击 查找全部 按钮,统计结果如下图所示:
- php7.2 sqlsrv 扩展 ubuntu Homestead centOs
PHP 7.2.9-1+ubuntu18.04.1 安装 sqlsrv 扩展 参考文章,感谢作者(建议先看,不看也可以) https://serverpilot.io/docs/how-to-inst ...
- 0002-小牛学堂大数据24期视频-架构Hadoop-Spark