類與物件的補充知識點

2022-07-29 05:45:09 字數 3970 閱讀 6136

一。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

在遊戲中可以將多個物件序列化後儲存為檔案,需要時再反序列化為物件,可以直接操作。

但要注意,序列化和反序列化操作時,物件可以不存在,但類必須存在。

二。isinstancetype用法比較

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...