如果你尝试去了解或学习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
两种方式的区别是非常明显的。如果有两个尺寸不同的立方体模型,前一种方法为了区分不同立方体模型的参数,也许会给参数定义下标,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源代码实际运行的截图:
所以,“对象”作为“实实在在的例子”,它的“实实在在”就在于把反映共同特征的信息(变量、函数)聚拢在一起,放到“class”(类型)里面。这种方式有个专业的术语来表达:封装。放到“class”里面的变量称为“成员变量”或“属性”,放到“class”里面的函数称为“成员函数”或“方法”。
其实 ABAQUS/CAE 里面的“对象”十分显而易见。
界面左侧的树形菜单(下图)就是一个具象的“对象”,它们是自下而上一级一级被包含的,其实就是类似上面的例子一样被“封装”了起来。每次在界面上建模就是往这个“对象里面“填进”各种数值、信息,而python 二次开发就是直接用代码的方式来完成往“对象”里面“填进”各种数值、信息的过程。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删