python 筆記8
1 繼承
子類繼承父類的一切屬性
如何使用繼承
basses 查看繼承所有父類
1 新式類 繼承object的類及該類的子類都是 廣度優先查詢
2 經典類 只有py2中存在經典類,py2中不會顯示繼承任何類,以及該類的子類
py3中所有的類都是新式類
派生
派生方法
import pickle
class bb1():
def init(self,age,fuck):
self.age = age
self.fuck = fuck
def save(self):
with open("./1","wb") as f:
ss = pickle.dumps(self)
print(ss)
class bb2():
def init
self.age = age
self.fuck = fuck
class cc1(bb1):
def init(self,age,fuck,hello):
## 繼承bb1的方法 1 直接調用父類的函數進行調用
#bb1.init(self,age,fuck)
## 使用super函數,將自己的類與父類進行綁定
# 1 super(cc1,self).init(age,fuck)
# 2 super().init(age,fuck)
self.hello = hello
繼承順序 查看類的__mro__方法可以查看
cc1.mro
調用super可以得到一個特殊的對象,該對象會按照當前類的mro列表依次查找屬性
super按照super算法去找
class f1():
def f1(self):
super().f2()
print("f1")
class f2():
def f2(self):
print("f2")
class f3(f1,f2):
pass
f3().f1()
鴨子方法
當1類有2個函數,如果2類也有相同函數,那麽這個類就是1
組合
1 什麽是多態
同一種事物的多種形態
封裝
1 雙下劃線開頭的屬性,會被隱藏起來,類內部可以直接使用,類外部可以直接使用
2 __的方法,或者屬性,在類的名稱空間中仍然存在,變成了 _類名方法 _foo__n例如
3 只有在類定義時候會進行 隱藏的方法和屬性會變名字,其他時候不變
4 當父類需要隱藏自己屬性時候,可以使用封裝方法
類裝飾器
@property 內置函數
將類的方法變成屬性
class people:
def init(self,name):
self.__name = name
@property
def name(self):
return self.__name
@name.setter
def name(self,val):
print("enter set")
if type(val) is not str:
raise TypeError("不是字符串格式")
self.__name = val
@name.deleter
def name(self):
print("...")
setter 和 deleter 的函數需要與property的方法名相同
classmethod 類方法
提供額外的實例化方式
class MySQL:
def init(self,host,post):
self.host = host
self.port = port
@classmethod
def from_conf(cls):
return cls(settings.Host,settings.port)
使用類方法, from_conf 等於調用 mysql的__init__
staticmethod 靜態方法
不綁定類,及self方法
isinstance(obj,foo)
obj是否foo的實例類型
hasattr
hasattr(people,"x")
getattr
getattr(people,"x")
setattr
setattr(people,"x",111)
delattr
str print的
repr
del 會在對象被刪除前自動觸發
內置函數
1 abs絕對值
2 all 可叠代對象 all[0,1,2,None] 返回True ALL [] 空時候為true
3 any 只有一個為真,則當前列表為真
4 bin (3) 將十進制轉換為 2進制
5 oct(9) 十進制轉換8進制
6 hex(17) 十進制轉換十六進制
7 callable 判斷一個對象是否為可調用
8 complex 負數
9 divmod 取余數 divmod(10,3) 等於(3,1)
10 enumerate(10) 對循環時候既可以取出索引 又可以取出值
11 frozenset() 不可變集合
12 hash 得到hash值
13 ord("a") 將字符串變成ascii
14 char(65) 將ascii變成字符串
15 pow pwo(3,2,3) 10**2%3
16 round round(3,5) 四舍五入
17 slice(1,4,1)
18 vars() 看類的名稱空間,等於 .dict
19 zip
python 筆記8