天天看點

樂高python程式設計入門——類及其屬性和方法

作者:積木玩家瘋叔

“ 類是面向對象語言的程式設計中的概念,是面向對象程式設計的基礎。類的實質是一種引用資料類型,類似于 byte、short、int(char)、long、float、double 等基本資料類型,不同的是它是一種複雜的資料類型。因為它的本質是資料類型,而不是資料,是以不存在于記憶體中,不能被直接操作,隻有被執行個體化為對象時,才會變得可操作。(來自“百度百科”)”

樂高python程式設計入門——類及其屬性和方法

在學習類之前我們先來熟悉一下面向過程和面向對象。

01

面向對象和面向對象

面向過程與面向對象是兩種程式設計風格、思想;

  1. 面向過程是基于流程的,将所要處理的事情細分到一個個小的步驟,然後按照順序依次執行,每一個步驟都可以采用一個函數來實作,這個思路比較符合我們現實中處理事情的方式;
  2. 缺點就是前後事務關聯性較大,後期維護成本高;
  3. 優點是效率高,結構清晰
  4. 面向過程是一種基礎的思維方法

與面向過程強調流程和步驟不同的是,面向對象更關注對象,也就是“誰”做什麼事情,将要做的處理的事情分解到不同的對象,不同的對象通過方法來處理其所要負責的部分

  1. 面向對象的基礎是對象,對象是類的執行個體化,類是對象的抽象化;
  2. 類,顧名思義就是分類,将現實生活具有相同特征的事物進行抽象化,比如越野車、小轎車、商務車都可以歸為車這一類;
  3. 在python中,類也是一種資料類型,隻不過是一種複雜的資料類型;

02

類包含屬性和方法,屬性描述類的特性,方法描述類的行為。

比如上面例子中的類:車

屬性有:長、寬、高、功率

方法有:啟動,停止、前進、轉彎

我們用

class ClassName:
    code           

來定義類,用

def methodName():
    code           

來建立類的方法。

我們來建立一個類:

import math


class myCircle():
    def __init__ (self,a=0,b=0,c=0):
        self.x=a
        self.y=b
        self.r=c
    
    def getCircleArea(self):
        return self.r**2*math.pi
    
    def getDistenceFromO(self):
        return math.sqrt(self.x**2+self.y**2)


    def getX(self):
        return self.x
    
    def getY(self):
        return self.y
    
    def getR(self):
        return self.r           

這個類是用來描述一個圓,有屬性x,y和r,分别代表圓心的坐标和圓的半徑,有方法getX(),getY(),getR(),getCircleArea()以及getDistenceFromO()

用來擷取圓的三個屬性以及計算圓的面積和圓心到原點的距離。

建立好類之後,我們來運用類。

a=myCircle(3,4,5)
print(a.getX())
print(a.getY())
print(a.getR())


print(a.getDistenceFromO())
print(a.getCircleArea())

           

上面的a是類myCircle執行個體化的一個對象,然後來調用a的方法,我們看結果:

樂高python程式設計入門——類及其屬性和方法

03

SPIKE中的類

在樂高的程式設計中,我們的集線器hub,以及所有的傳感器和硬體在python中其實都是被封裝好的類,我們直接調用就可以,這就是在SPIKE中進入python程式設計頁面上面預設的幾行代碼的含義;

樂高python程式設計入門——類及其屬性和方法

我們無須知道這些類具體是如何定義編寫的,我們隻需要掌握如何運用這些類以及其中的方法就行,具體的可以參考SPIKE中的知識庫:

樂高python程式設計入門——類及其屬性和方法