将对象层次结构从 MATLAB 转换为 python

Convert objects hierarchy from MATLAB to to python

我正在将 MATLAB 脚本转换为 python。 MATLAB 脚本对不同的输入变量使用某种对象层次结构,如:

parameterA.subparameter1= A1;
parameterA.subparameter2= A2;

parameterB.subparameter1= B1;
parameterB.subparameter2= B2;

其中A1,A2,B1,B2都可以是字符串和数字。我希望将其转换为 python 并且我使用了

parameterA.subparameter1= A1
parameterA.subparameter2= A2

parameterB.subparameter1= B1
parameterB.subparameter2= B2

现在我收到错误:

NameError: name 'parameterA' is not defined

我尝试使用 parameterA,parameterB=[],[] 来初始化它们,这不好,因为我想要对象而不是列表,或者根据 this post 以及其他一些方法 parameterA,parameterB=set(),set()解决方案。

这是正确的方法吗?我如何初始化这个结构?有更好的方法吗?

我强烈建议您改用 dicts。这些是 python.

中高效且通用的内置对象
parameterA  = {'subparameter1': A1} # definition
parameterA['subparameter2'] = A2 # update/assignment

parameterB = {'subparameter1': B1, 'subparameter2': B2}

如您所见,您可以使用方括号访问和修改值。如果你真的坚持使用属性查找,你可以使用types.SimpleNamespace:

from types import SimpleNamespace

parameterA = SimpleNamespace(subparameter1=A1)
parameterA.subparameter2 = A2

parameterB = SimpleNamespace(subparameter1=B1, subparameter2=B2)

我坚持使用听写的主要原因是您可以轻松地动态访问密钥。如果您从不以编程方式访问属性,则仅使用 SimpleNamespace 或类似的东西,因为您的对象更像是将变量分组在一起的工具。您仍然可以通过编程方式访问属性,但它比 dict 项目查找更丑陋(并且更不惯用)。

在 Python MATLAB 引擎的 documentation 中,您可以找到 MATLAB 中的 类 与 Python 中的 类 的消歧。

如果要适合文档,则应将 MATLAB 中的结构替换为 Python 中的字典(例如 )。如果您想保留使用点运算符调用结构字段的语法,您还可以在 Python.

中定义 类
class parameterA: pass
class parameterB: pass

parameterA.subparameter1= A1
parameterA.subparameter2= A2

parameterB.subparameter1= B1
parameterB.subparameter2= B2

...但我也推荐字典。