1. 程式人生 > >python 筆記8

python 筆記8

類裝飾器 abs ngs 返回 stat with ... 類型 setattr

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,fuck):
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