将对象层次结构从 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()
解决方案。
这是正确的方法吗?我如何初始化这个结构?有更好的方法吗?
我强烈建议您改用 dict
s。这些是 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
...但我也推荐字典。
我正在将 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()
解决方案。
这是正确的方法吗?我如何初始化这个结构?有更好的方法吗?
我强烈建议您改用 dict
s。这些是 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 中的字典(例如
class parameterA: pass
class parameterB: pass
parameterA.subparameter1= A1
parameterA.subparameter2= A2
parameterB.subparameter1= B1
parameterB.subparameter2= B2
...但我也推荐字典。