1. 程式人生 > >回顧上周所學內容及時間轉化

回顧上周所學內容及時間轉化

python 沒有 除了 except getattr 異常 use 判斷 方法封裝

面向對象:
對象: 萬事萬物皆為對象. 特征, 動作或功能放在一起的就是一個對象
對象如何創建的. 在python中對象是通過類來創建的. 類是對對象的描述.統稱.約束.
class Car:
def fly(self):
pass

類與對象的關系:
類是類型, 類別. 對事物的描述
對象是個體. 具體的某一個東西或者事物

創建對象:
類名() 實例化.

三大特征:
1. 封裝. 將數據或者方法封裝在一個類中.
2. 繼承. 子類可以自動有用父類中除了私有內容外的所有內容. 包括了抽象方法
3. 多態. python原生就是多態. 同一個對象, 多種形態.


成員:
1. 變量
實例變量. 對象擁有的東西.
類變量. 類擁有的東西.多個對象共享. 最好是類名訪問類變量
2. 方法
1. 實例方法 def 方法(self):pass
self: 當前調用這個方法的對象.
2. 靜態方法 最好是類名訪問
@staticmethod
def 方法():
3. 類方法 最好是類名訪問
@classmethod
def 方法(cls):
3. 屬性
用方法來描述屬性信息

@property
def age(self):
return 18
類與類之間的關系:
1. 依賴關系 類與類的關系是最弱的
在方法的參數中傳遞其他類的對象

2. 關聯關系. 組合. 聚合 關系很緊密.
把一個對象裝在自己身上

class Phone:
def __init__(self, person):
self.owner = person
self.user = user

class Person:
pass

class User:
pass

3. 繼承關系, 實現關系
class 子類(父類):
pass
父類: 基類. 超類
子類: 派生類.

實現關系:
父類: 抽象類. 如果都是抽象方法. 父類被稱為: 接口
子類: 必須對父類中的抽象方法進行重寫.
約束:
父類對子類的約束. 子類必須重寫的內容
1. 拋異常 raise NotImplementError
2. 抽象類
from abc import ABCMeta, abstractmethod
元類必須設置成ABCMeta。 metaclass = ABCMeta
這個類中就可以寫出抽象方法。 @abstractmethod
類中包含抽象方法。 那麽這個類就是抽象類. 抽象類一般不創建對象

MRO:
1. 經典類
采用的是深度優先遍歷
2. 新式類
如果沒有菱形繼承. 就是深度優先遍歷。
如果是簡單的菱形繼承。把頭幹掉。 使用深度優先。 最後是頭
如果是復雜的菱形.需要用C3算法
找到每個類的繼承關系. 然後拆分. 拆到最後. 然後再合並.

筆試題. 第一件事先畫圖. 看有沒有菱形. 然後再算.
super:
執行MRO列表中的下一個類中的方法
super().方法()
super(類名, self).方法()

反射
hasattr(obj, str)
getattr(obj, str)
setattr(obj, str, value)
delattr(obj, str)

issubclass, type, isinstance
issubclass: 判斷是否是xxx的子類
type: 精準的給出對象是哪個類的對象
isinstance: 判斷xxx是否是xxx類型的.

方法和函數
FunctionType, MethodType

異常處理:
拋出異常: raise Exception()
捕獲異常:
try:
xxxx
except Exception as e:
xxxx
else:

finally:

堆棧信息:
import traceback
和logging一起用

自定義異常: 繼承Exception



# 18888888888 時間戳 -> 格式化時間
# 把時間戳轉化成結構化時間
# f = 18888888888
# st = time.localtime(f)
# print(st)
# # 格式化結構時間
# t = time.strftime("%Y/%m/%d %H:%M:%S",st) # f: format 格式化
# print(t)

# 用戶輸入了一個時間 2018-09-08 11:22:36 - 存儲 時間戳
# 先把格式化時間轉化成結構化時間
# s = "2018-09-08 11:22:36"
# st = time.strptime( s , "%Y-%m-%d %H:%M:%S") # p:parse 轉換
# t = time.mktime(st) # 轉化成時間戳 1536376956
# print(t)

回顧上周所學內容及時間轉化