一。pickle與物件的儲存
classcourse:
def__init__(self,name,period,price):
self.name = name
self.period = period
self.price = price
# python = course('python','6
moneth',21800)
# linux = course('linux','5 moneth',19800)
# go = course('go','4 moneth',12800)
importpickle
# with open('pickle_file','ab') as f:
#將物件序列化為檔案。
#
pickle.dump(python,f)
#
pickle.dump(linux,f)
#
pickle.dump(go,f)
withopen('pickle_file','rb')asf: #將檔案反序列化為物件
while
true:
try:
obj = pickle.load(f)
print(obj.name,obj.period)
excepteoferror:
break
在遊戲中可以將多個物件序列化後儲存為檔案,需要時再反序列化為物件,可以直接操作。
但要注意,序列化和反序列化操作時,物件可以不存在,但類必須存在。
二。isinstance與type用法比較
a = 1 b = 'abc'
print(isinstance(a,int)) #true #isinstance判斷是否是某資料型別。
print(isinstance(a,float)) #false
print(isinstance(b,str)) #true
a = 1 b = 'abc'
print(type(a) is int) #true
print(type(b) is str) #true
class cat:pass
小白 = cat()
print(type(小白) is cat) #true
print(isinstance(小白,cat)) #true
class animal:pass
class cat(animal):pass
小白 = cat() #小白是cat類的物件,但繼承了animal類。
print(type(小白) is cat) #true
print(type(小白) is animal) #false (小白)的型別是cat,不是animal的物件。
print(isinstance(小白,cat)) #true
print(isinstance(小白,animal)) #true
isinstanc判斷類與類之間的繼承關係,物件是不是這個類以及子類的物件。
三。方法與函式
from types import functiontype,methodtype
functiontype : 函式
methodtype : 方法
class a:
def func(self):
print('in func')
print(a.func) #用類呼叫,只是函式
a = a()
print(a.func) #用物件調類裡的函式,就叫方法
# >
print(isinstance(a.func,methodtype)) #true
print(isinstance(a.func,functiontype)) #true
方法與函式的區別:不在於它是否寫在類裡,而在於誰呼叫它。用類呼叫就是函式,用物件呼叫,就是方法。
四。類的相關知識
類有兩種作用:屬性引用和例項化
1:檢視我們定義的類的屬性到底存在**:
1.dir(類名):查出的是乙個名字列表
2.類名.__dict__:查出的是乙個字典,key為屬性名,value為屬性值
2.類的特殊方法
class a:
role = '法師'
def func1(self):pass
def func2(self):pass
class b:pass
class c(b,a):pass
print(a.__base__) #類的第乙個父類,沒有時為類祖宗:
print(c.__base__) #類的第乙個父類,
print(c.__bases__) #類所有父類構成的元組:(, )
print(a.__dict__) #類的字典屬性
print(a.__name__) # 類的名字(字串):a
print(a.__class__) # 例項對應的類:
print(b.__class__) # 例項對應的類:
print(c.__class__) # 例項對應的類:
print(c.__module__) # 類定義所在的模組:__main__
類有兩種作用:屬性引用和例項化
一:檢視我們定義的類的屬性到底存在**:
1.dir(類名):查出的是乙個名字列表
2.類名.__dict__:查出的是乙個字典,key為屬性名,value為屬性值
二.類的特殊方法
class a:
role = '法師'
def func1(self):pass
def func2(self):pass
class b:pass
class c(b,a):pass
print(a.__base__) #類的第乙個父類,沒有時為類祖宗:
print(c.__base__) #類的第乙個父類,
print(c.__bases__) #類所有父類構成的元組:(, )
print(a.__dict__) #類的字典屬性
print(a.__name__) # 類的名字(字串):a
print(a.__class__) # 例項對應的類:
print(b.__class__) # 例項對應的類:
print(c.__class__) # 例項對應的類:
print(c.__module__) # 類定義所在的模組:__main__
類與物件知識的補充
分類 1.普通 塊 2.構造塊 3.靜態塊 4.同步 塊 定義在方法中的 塊 例 public class test int x 100 system.out.println x2 x 輸出結果為 x1 10 x2 100 定義在類中的 塊,也叫例項 塊。構造 塊一般用於初始化實際成員變數。例 cl...
C 類 物件知識點
在類體內不允許對成員函式進行初始化。定義類時,類的資料成員不佔記憶體空間 但是,建立類的物件時,只為每個物件分配用於儲存資料成員的記憶體,不為函式成員分配記憶體。在定義類時,不能定義該類的變數,只能定義該類型別的指標成員和該類型別的引用成員。淺拷貝和深拷貝的區別 當類的資料成員是指標型別時,深拷貝能...
正則知識點補充
1.與正規表示式有關的字串物件的方法 string.replace pattern,string 替換在正規表示式查詢中找到的文字。string.search pattern 通過正規表示式查詢相應的字串,只是判斷有無匹配的字串。如果查詢成功,search 返回匹配串的位置,否則返回 1。strin...