Python 手记 - 8

面向对象扩展

1、isinstance(obj, cls), issubclass(sub, super)示例

class A(object):

def a(self):

print "A"

class B(A):  #B继承A

def b(self):

print "B"

t = B()

print isinstance(t, A)  #判断t是否为A的实例对象

print isinstance(t, B)  #判断t是否为B的实例对象

print issubclass(B, A)  #判断B是否为A的派生类

2、异常处理

异常的完整结构

try:

pass  #主代码块在这里执行

except:

pass  #出现异常时,执行此处语句

else:

pass  #主代码块执行完毕之后,执行此处语句

finally:

pass  #不管是否有异常,最终都会输出结果

自定义异常

"""__str__方法"""

class MyError(Exception):

def __init__(self, msg):

self.message = msg

def __str__(self):

return self.message

try:

#"http error"是传入的message信息,产生异常时会调用__str__方法,并返回传入的          # http error

raise MyError("http error")

except Exception, e:

print e

3、反射

"""第一种方法:反射(针对海量页面,根据URL的不同返回不同的页面)"""

print "Welcome, My Web"

url = raw_input("http://")

controller, action = url.split("/")

func = getattr(home, action)

ret = func()

print ret

"""第二种方法,匹配每个不同的URL,返回不同的页面"""

print "Welcome, My Web"

url = raw_input("http://")

if url == "home/home":

print home.home()

elif url == "home/page":

print home.page()

elif url == "home/row":

print home.row()

else:

print "wrong url"

getattr, setattr, hasattr, delattr

print dir(home)

print hasattr(home, "home")

setattr(home, "liyang", "gentle men")

print dir(home)

delattr(home, "liyang")

delattr(home, "row")

print dir(home)

结果:

[‘__author__‘, ‘__builtins__‘, ‘__doc__‘, ‘__file__‘, ‘__name__‘, ‘__package__‘, ‘home‘, ‘page‘, ‘row‘]

True

[‘__author__‘, ‘__builtins__‘, ‘__doc__‘, ‘__file__‘, ‘__name__‘, ‘__package__‘, ‘home‘, ‘liyang‘, ‘page‘, ‘row‘]

[‘__author__‘, ‘__builtins__‘, ‘__doc__‘, ‘__file__‘, ‘__name__‘, ‘__package__‘, ‘home‘, ‘page‘]

"""反射三,动态导入模块"""

controller, action = raw_input("http://").split("/")

#将模块以字符串的形式导入,输入home/home,得到返回值home

module = __import__(controller)

func = getattr(module, action)

ret = func()

print ret

结果:

http://home/home

home

4、Socket编程

"""socket-server"""

def main():

# 创建socket对象

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)

# 监听端口, 地址以元组的形式表现

sock.bind((‘127.0.0.1‘, 8001))

# 开始监听,5表示队列中可以保存的,未被服务器端所处理的连接

sock.listen(5)

while True:

# 阻塞,deng 。。。。

# 直到有请求连接

print ‘....‘

connection, address = sock.accept()

# connection,代表客户端socket对象,

# address,客户端IP地址

#handle_request(connection)

#接受客户端传来的信息

buf = connection.recv(1024)

print buf

connection.send("HTTP/1.1 200 OK\r\n\r\n")

connection.send("Hello, World")

connection.close()

if __name__ == ‘__main__‘:

main()

""""socket-client:"""

import socket

__author__ = ‘LiYang‘

#创建socket对象

obj_client = socket.socket()

#客户端连接服务器端的地址

obj_client.connect(("localhost", 8021))

#客户端向服务器端发送的数据

obj_client.send("client")

#客户端接受服务器端的返回值,并输出

server_data = obj_client.recv(1024)

print server_data

#关闭客户端连接

obj_client.close()

时间: 2024-08-10 17:11:20

Python 手记 - 8的相关文章

Python 手记

Python 手记 python 2.7 notepid ++ 编辑器 <简明 Python 教程> www.byteofpython.info 获得人生中的成功需要的专注与坚持不懈多过天才与机会. ——C.W. Wendte wxPython.Twisted和Python图像库 Python.org/download 点击控制面板->系统->高级->环境变量.在“系统变量”表单中点击叫做PATH的变量,然后编辑这个变量,把;C:\Python23加到它的结尾.当然,是Pyt

Python手记

字符串的拼接 1."+",如果是字符和数字相连,要使用str()函数对于数字进行字符转化: 2.join() 3.",",链接的两个字符串之间用空格做关联 4.占位符 tmp +=1 #print 'r'%tmp print("row num is: %s"%(tmp)) print('value is: %s; RowNum is: %s'%(cellValue,rowNo)) #多个占位 python的全局变量 第一种是def consts(

菜鸟教程 Python 手记 1

Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. 编码 编码默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码: # -*- coding: cp-1252 -*- 多行语句 Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠(\)来实现多行语句,例如: total = item_one + item_two + item_three 在 [], {}, 或 () 中

Python 手记-3

1.PyCharm配置模板 file------settings-----editer-----filie*--------templates------python script 添加 #!/usr/bin/env python # -*- coding:utf-8 -*- #Writed by liyang 这样,创建同样文件的时候,会自动添加这些内容到新建文件 2.小练习:生成字典 文件内容: alex|123|1 eric|123|1 emmy|123|1 obj = file('log

python手记(7)------字典(操作方法)

1.dict方法概述 In[70]: dir(dict) Out[69]: ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ite

python手记(52)

import  sys import pygamefrom pygame.locals import *import timepygame.init()screen=pygame.display.set_mode((500,550))myfont=pygame.font.Font(None,30)red=(255,0,0)green=(0,255,0)textImage=myfont.render(time.strftime("%Y-%m-%d  %H:%M:%S", time.loc

python手记(53)

import sys import pygame from pygame.locals import * import time import math pygame.init() screen=pygame.display.set_mode((500,550)) myfont=pygame.font.Font(None,30) red=(255,0,0) green=(0,255,0) blue=(0,0,255) pygame.display.set_caption("myhaspl&quo

python手记-twisted(2)

关闭连接 Xshell 5 (Build 0655)Copyright (c) 2002-2015 NetSarang Computer, Inc. All rights reserved. Type `help' to learn how to use Xshell prompt.[c:\~]$ telnet 120.55.*.* 8001 Connecting to 120.55.*.*:8001...Connection established.To escape to local she

python手记(11)------while循环(break 和 continue)

1.while 比 for 适用性更广:满足条件情况下一直进行 2.猜数字游戏1.0版 import numpy as np ''' 猜整数1.0版: 1.记录次数 2.给出范围 3.while语句,包括continue.break.tyr.except''' answer=np.random.randint(1,101) i=0 while True: try: guess=int(input('请猜一个1-100的正整数:')) i+=1 if guess==answer: print('太

python手记(3)------字符串

1.字符串格式化----% 原来的%: In[2]: a='my name is %s and my age is %d'%('eric',26) In[3]: a Out[3]: 'my name is eric and my age is 26' 占位符%:为真实值预留位置,并控制显示的格式.占位符可以包含有一个类型码,用以控制显示的类型,常用如下: %s    字符串 (采用str()的显示) %r    字符串 (采用repr()的显示) %c    单个字符 %b    二进制整数 %