鳥瞰 ABAQUS/CAE 的 PYTHON 二次開發,“面向對象”該如何理解 ?

ss.png

鳥瞰 ABAQUS/CAE 的 PYTHON 二次開發,“面向對象”該如何理解 ?

如果你嘗試去了解或學習ABAQUS/CAE 的PYTHON 二次開發,你就會被告知:“ABAQUS/CAE 的 PYTHON 二次開發是面向對象編程的。”

這篇文字就帶各位從“面向對象編程”這個角度來初步認識一下ABAQUS/CAE 的 PYTHON 二次開發。

換個表達去理解

首先,“對象”可以換成“實例”這個詞語來表達,可以樸素的理解為“實際的例子”、“實實在在的例子”。

過去面向過程編程,變量都是一個一個松散的進行定義,比如為了描述下面這個邊長20cm的立方體模型,會像這樣定義變量和函數來描述它:

# L長度 W寬度 H高度

L = 20.0
W = 20.0
H = 20.0 

# 這個函數用來計算體積 

def volume (L, W, H):
    V = L * W * H    
    return V

而面向對象編程會這樣來描述它:

# 邊長變量 和 計算體積的函數 被包含在 model 這個類型里面

class model (object):

    def __init__(self, L, W, H):
        self.L = L
        self.W = W
        self.H = H
        
    def volume (self):
        return self.L * self.W * self.H
ss.png

兩種方式的區別是非常明顯的。如果有兩個尺寸不同的立方體模型,前一種方法為了區分不同立方體模型的參數,也許會給參數定義下標,L1, W1, H1, L2, W2, H2。而后面的方法只需要給每個立方體模型命名,比如立方體分別命名為 model1、model2,那他們的邊長、體積就可以這樣來表達了:

model1.L,  model1.W,  model1.H,  model1.volume()

model2.L,  model2.W,  model2.H,  model2.volume()

含義非常明確,參數不會混亂,各個參數不需要再重新定義了。

下面是 python源代碼實際運行的截圖:

ss.png

所以,“對象”作為“實實在在的例子”,它的“實實在在”就在于把反映共同特征的信息(變量、函數)聚攏在一起,放到“class”(類型)里面。這種方式有個專業的術語來表達:封裝。放到“class”里面的變量稱為“成員變量”或“屬性”,放到“class”里面的函數稱為“成員函數”或“方法”。

ABAQUS/CAE 里面的“對象”

其實 ABAQUS/CAE 里面的“對象”十分顯而易見。

界面左側的樹形菜單(下圖)就是一個具象的“對象”,它們是自下而上一級一級被包含的,其實就是類似上面的例子一樣被“封裝”了起來。每次在界面上建模就是往這個“對象里面“填進”各種數值、信息,而python 二次開發就是直接用代碼的方式來完成往“對象”里面“填進”各種數值、信息的過程。

ss.png
登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

14
2