鸟瞰 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
(1条)
默认 最新
不错不错!
评论 1 点赞
回复
讲的很通俗易懂
评论 点赞
点赞 14 评论 2 收藏
关注