码迷,mamicode.com
首页 > 编程语言 > 详细

Python 面向对象 三

时间:2015-12-20 02:07:45      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:python 面向对象 三

isinstance :检查是否object是类cls的对象,后面可以跟创建自己的类,也可以是基类。 可用于判断excel里面的数值是否是int类型

例如:isinstance(对象,类)

issubclass:检查某个类是否是某个类的子类。

例如:issubclass(类,类)

例:

class A:

        pass

class B(A):

pass

b = B()

print (isinstance(b,A)) -->True,判断b是由A创建的,

print (issubclass(B,A)) -->True,判断B类继承A类,

异常处理:

异常全部捕获:Exception

代码块:try ..... except Exception,e

e 是实例,有Exception类创建的。

例如:

try:

inn = input("input num:")

print (inn)

except Exception,e:

print (e)

异常详细的捕获:KeyError,IndexError...

例如:

try:

k = [11,22,33]

k [100]

except IndexError as e:

print (e)

先用详细的捕获错误,然后再用全部的来捕获错误信息。

raise Exception("内容"):主动触发异常,将内容封装到e中。

try:

##逻辑代码

pass

except IndexError,e:

#捕获异常

pass

except Exception,e:

##捕获异常

pass

else:

###逻辑块中未出现异常,执行此处!

pass

finally:

###不管有没有异常,都要执行。

pass

可用于 连接数据库的代码中

print 对象时,调用的是类中的__str__方法

例如:

###利用面向对象来定义错误,然后调用。

#定义错误类:AlexError

class AlexError(Exception):

#使用构造方法,往里面传参数,达到动态显示错误信息的效果

def __init__(self,messge=None):

self.message = messge

##调用此方法,返回错误信息

def __str__(self):

if self.message:

return  self.message

else:

return "Alex Error"

try:

##触发错误

raise AlexError() -->不传参数      如若穿参数,则显示参数的内容

except AlexError as e:

print (e)  -->显示:"Alex Error"

assert: 条件语句,判断,1、程序测试使用。2、如果满足条件就用,不满足条件就不能用。


反射:

操作内存中某个容器中的元素

getattr:去某个容器(模块)中找函数,字符串函数名。如果有,则 获取函数

hasattr:判断某个容器里面是否存在某个函数。

setattr:去某个容器里面设置某个函数。

delattr:去某个容器里面删除摸个成员。

__import__(参数):动态导入模块

例如:

import home

controller,action = input("shuru URL:").split("/")  -->将模块和方法分割

module = __import__(controller)  -->动态传入模块参数

func = getattr(module,action) -->查找传入的模块中是否有action

ret = func() --> 获得返回值

print (ret)


单例模式:

内存中只存在单个实例

创建一个静态字段,用来存放永远存放到内存中的那个实例。

创建一个方法,用来存放到内存中。

socket

套接字

创建socket:  socket.socket()

send :发送数据到缓冲区,由缓冲区来进行处理发送

sendall:发送数据到缓冲区,立马发出去,不需要缓冲区处理

rev(1024):最大接受到的数据的size

例子:

客户端:

##导入socket

import socket

##创建socket

obj = socket.socket()

###创建连接,通过8341端口

obj.connect((‘localhost‘,8341))

####发送请求数据

obj.send("000000")

##接受返回的数据,最大size是1024

server_data = obj.recv(1024)

print(server_data)

###关闭连接

obj.close()

服务端:

##导入socket

import socket

##创建socket

obj_server = socket.socket()

###监听端口

obj_server.bind((‘localhost‘,8341))

###连接请求最大值

obj_server.listen(5)

###循环发送数据

while True:

print("waiting....")

####阻塞,等待连接

conn,addr = obj_server.accept()

###接受客户端发过来的数据,最大size为1024

client_data = conn.recv(1024)

print (client_data)

##发送数据

conn.send("111111111")

##断开与客户端的连接

conn.close()

socketserver:必须要创建一个类,类必须继承  SocketServer.BaseRequestionHandle,也必须定义一个方法handle

self.request.recv()


Python 面向对象 三

标签:python 面向对象 三

原文地址:http://dzlly1.blog.51cto.com/932657/1726254

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!