1. 程式人生 > 其它 >python學習筆記 Python面向物件進階示例--自定義資料型別

python學習筆記 Python面向物件進階示例--自定義資料型別

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

6、Python面向物件進階示例--自定義資料型別

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]))