python學習筆記 Python面向物件進階示例--自定義資料型別
阿新 • • 發佈:2022-03-10
1、_init_.py這個檔案有什麼作用?
專案會自動執行_init_.py這個檔案
兩個作用:初始化作用和批量匯入包的作用
2、python將所有的事物都看作物件
3、類中的建構函式__init__()會在例項化時自動呼叫。
類變數和例項變數(成員變數)的區別:
類變數可以直接通過類的名稱獲取到 print(Student.sex),也可以通過例項化後的物件獲取到:s1 = Student(),print(s1.sex)
例項變數或成員變數只能通過例項化後的物件獲取到:s1 = Student(),print(s1.age)
3、內建函式__str__()
內建函式__str__()如果沒有定義,那麼輸出類物件時輸出的是地址
class Student: def __init__(self,age,name,number): self.age = age self.name = name self.number = number s1 = Student(12,"Mike",1) print(s1)
現在我們使用內建函式__str__(self):
4、繼承
#從列印結果來看,子類擁有父類的例項變數,並可以呼叫父類函式
class Student: def __init__(self, age, name, number): self.age= age self.name = name self.number = number def test(self): print(1) # 下面的這種類表示BoyStudent繼承類Student class BoyStudent(Student): ... # BoyStudent類可以使用父類Student的函式 boy = BoyStudent(12,"Mike",1) print(boy.age) boy.test()
5、知道變數的型別
print(type(x))
https://jingyan.baidu.com/article/29697b914fa999ab20de3cbc.html
import pickle class Person: def __init__(self, n, a): self.name = n self.age = a def show(self): print(self.name+"_"+str(self.age)) def __str__(self): return 'Trajectory data is {}'.format(self.name) #return self.name aa = Person("張三", 20) aa.show() with open('data/aa.pickle', 'wb') as f: pickle.dump(aa, f) with open('data/aa.pickle', 'rb') as f: dataset = pickle.load(f) print(type(dataset)) print(dataset)
7、當pickle檔案的資料型別是多個類自定義的資料型別時,如何讀取這型別的pickle資料?
回答:在這些類中定義__str__()函式,使其可以輸出資料。
''' Representation of trajectory and corresponding dataset in our work ''' import numpy as np # class Trajectory is used in the dataset # for candidates, it is stored in the form of id(tuple) class Trajectory(): def __init__(self, data): # np.array(data,dtype) # data :要轉換的資料(包括列表,元祖,字串,生成器),dtype :指定資料型別 self.data = np.array(data, dtype='int') self.data_length = len(data) # 加上 __str__函式 def __str__(self): return 'Trajectory data is {}'.format(self.data) class SeqDataSet(): def __init__(self, points): self.points = points self.record = [] # #加上 __str__函式 def __str__(self): return 'SeqDataSet record is {}'.format(str(self.record[1]))