标签:
一、python学习之面向对象高级语法部分
1、静态方法
例如:
1 class Dog(object):
2
3 def __init__(self,name):
4 self.name = name
5
6 @staticmethod
7 def eat():
8 print(" is eating")
9
10
11
12 d = Dog("ChenRonghua")
13 d.eat()
1)实现
@staticmethod装饰器即可把其装饰的方法变为一个静态方法
2)特点
静态方法是不可以访问实例变量或类变量
3)解决方案
1. 调用时主动传递实例本身给eat方法,即d.eat(d)
2. 在eat方法中去掉self参数,但这也意味着,在eat中不能通过self.调用实例中的其它变量了
2、类方法
例如:
class Dog(object):
name = "我是类变量" def __init__(self,name): self.name = name @classmethod def eat(self): print("%s is eating" % self.name)d = Dog("ChenRonghua")d.eat()
1)实现
类方法通过@classmethod装饰器实现
2)特点
类方法只能访问类变量,不能访问实例变量
3、属性方法
例如:
class Dog(object):
def __init__(self,name): self.name = name @property def eat(self): print(" %s is eating" %self.name)d = Dog("ChenRonghua")d.eat()根据字符串的形式去某个对象中操作成员,具体包括:
根据字符串的形式去一个对象中寻找成员
根据字符串的形式去一个对象中设置成员
根据字符串的形式去一个对象中删除成员
根据字符串的形式去一个对象中判断成员是否存在
2)反射的函数
getattr(object,name[,default])
根据字符串的形式去一个对象中寻找成员
setattr(object, name, value)
根据字符串的形式去一个对象中设置成员
delattr(object, name)
根据字符串的形式去一个对象中删除成员
hasattr(object, name)
根据字符串的形式去一个对象中判断成员是否存在
5、异常处理
1)常用异常:
AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError 输入/输出异常;基本上是无法打开文件ImportError 无法引入模块或包;基本上是路径问题或名称错误IndentationError 语法错误(的子类) ;代码没有正确对齐IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]KeyError 试图访问字典里不存在的键KeyboardInterrupt Ctrl+C被按下NameError 使用一个还未被赋予对象的变量SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)TypeError 传入对象类型与要求的不符合UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它ValueError 传入一个调用者不期望的值,即使值的类型是正确的ArithmeticError
AssertionErrorAttributeErrorBaseExceptionBufferErrorBytesWarningDeprecationWarningEnvironmentErrorEOFErrorExceptionFloatingPointErrorFutureWarningGeneratorExitImportErrorImportWarningIndentationErrorIndexErrorIOErrorKeyboardInterruptKeyErrorLookupErrorMemoryErrorNameErrorNotImplementedErrorOSErrorOverflowErrorPendingDeprecationWarningReferenceErrorRuntimeErrorRuntimeWarningStandardErrorStopIterationSyntaxErrorSyntaxWarningSystemErrorSystemExitTabErrorTypeErrorUnboundLocalErrorUnicodeDecodeErrorUnicodeEncodeErrorUnicodeErrorUnicodeTranslateErrorUnicodeWarningUserWarningValueErrorWarningZeroDivisionErrortry:
# 主代码块 passexcept KeyError,e: # 异常时,执行该块 passelse: # 主代码块执行完,执行该块 passfinally: # 无论异常与否,最终执行该块 passfile模块是针对某个指定文件进行【打开】【读写】【关闭】
socket模块是针对 服务器端 和 客户端Socket 进行【打开】【读写】【关闭】
3、scoket编程思想
1)TCP服务端
2)TCP客户端
import socket#服务器端server = socket.socket()server.bind((‘localhost‘,6969))#绑定要监听的端口server.listen()#监听print("等待连接。。。")conn,addr = server.accept()#等待接收print(conn,addr)server.close()2) 客户端
import socket#客户端client = socket.socket()#声明socket类型,同时生成socket连接对象client.connect((‘localhost‘,6969))client.close()先运行服务器端,然后再运行客户端
服务器端:
|
1
2
3
4
5
6
7
8
9
|
import socket#服务器端server = socket.socket()server.bind((‘localhost‘,6969))#绑定要监听的端口server.listen()#监听print("等待连接。。。")conn,addr = server.accept()#等待接收print(conn,addr)server.close() |
客户端:
|
1
2
3
4
5
|
import socket#客户端client = socket.socket()#声明socket类型,同时生成socket连接对象client.connect((‘localhost‘,6969))client.close() |
标签:
原文地址:http://www.cnblogs.com/xiaopython/p/5855681.html