標籤:結構 add ted property 定義類 __init__ import write 代碼
抽象類別:
py2:匯入abc函數,_metaclass__ = abc.ABCMeta;在強制調用類下:@abc.abstractmethod
py3:再強制調用類下添加raise NotImplementedError
靜態方法
@staticmethod 避免執行個體化開闢大量記憶體空間 既不能訪問公有屬性,也不能訪問執行個體屬性
類方法
@classmethod 類方法,只能訪問類的公有屬性,不能訪問執行個體屬性
屬性方法
@property 作用是把一個方法變為一個靜態屬性
@property + 修改屬性方法@talk.setter 刪除@talk.delter
類的特殊方法
print(Foo.__doc__) 查看類的描述資訊
__import__(‘time.account‘,fromlist=True) 動態匯入, 以字串模式匯入模組
__call__():執行個體+()會觸發call method
__dict__ 列印執行個體中所有屬性值
__getitem__ 以字典的形式操作執行個體
__new__ 先於__init__執行,可以在new中自訂類的執行個體化過程
__str__ 返回執行個體的字串形式
__metaclass__ 元類
動態建立類
type() 可以動態建立一個類
===============================================
異常處理
一、基本異常處理結構
try:
代碼塊
except Exception as e:
代碼塊
二、複雜異常處理結構
try:
代碼塊
except:
代碼塊
else:
代碼塊
finally:
代碼塊
錯誤:try>except>finally
正確:try>else>finally
三、異常對象
try:
代碼塊
except Exception as obj:
python內部將錯誤資訊封裝到obj中
代碼塊
四、異常種類
exception 能捕獲所有異常資訊(萬能)
try:
代碼塊
except Exception as obj:
代碼塊
execpt ValueError as obj:
代碼塊
execpt I/O as obj:
代碼塊
execpt IndexError as obj:
代碼塊
execpt (IndexError,IndexError) as obj:
print(obj)
IndentationError,Syn... 無法抓到
五、主動觸發異常
主動觸發異常:raise Exception(‘郵件發送失敗‘)
六、斷言
assert 條件 #條件為true斷言不執行,為false拋出異常
七、自訂異常
class HaiTaoError(Exception):
========================================================
反射
getattr(‘容器‘,‘名稱‘) 以字串的形式去某個對象中,擷取指定的屬性
hasattr(‘容器‘,‘名稱‘) 以字串的形式判斷某個對象中,是否含有指定的屬性
setattr(‘容器‘,‘名稱‘,‘值‘) 以字串的形式去某個對象中,設定或添加指定屬性
delattr(‘容器‘,‘名稱‘) 以字串的形式去某個對象中,刪除指定屬性
=========================================================
socket
socket.SOCK_STREAM #for tcp
socket.SOCK_DGRAM #for udp
socket.SOCK_RAM #原始通訊端
socket.SOCK_RDM #一種可靠的UDP形式
socket.SOCK_SEQACKET #廢棄
=========================
server端
server = socket.socket(AF_INET,SOCK_STREAM)
server.bind((‘0.0.0.0‘,8000))
server.listen(5)
conn,client_addr = server.accept() #conn,用戶端過來的串連產生的對象
conn.send(‘‘)
conn.recv(‘‘)
server.close()
client端
client = socket.socket(AF_INET,SOCK_STREAM)
client.connect()
====================================
for line in f:
conn.send(line)
f.write(d)
Python開發營運之路day8