Python中的MATLAB结构

时间:2014-09-21 22:19:42

标签: python matlab

我是Python的新手。我想在python中使用类似MATLAB的结构。我已经在使用字典的stackoverflow中看到了几个解决方案,例如thisthis。但是,我觉得下面的代码中的虚拟对象方法更像MATLAB,并且更自然,因为我们不需要属性名称的双引号。对我来说,用例是以一种随意的方式将几个对象包装在一起,这样一些函数就不需要有很长的参数列表。例如,下面的最后一个函数只有两个参数而不是6.

我的问题是:现在我必须在我的脚本中定义虚拟类结构。有必要吗?如果我的许多脚本需要使用它,我将不得不把它放在我所有的功能都可以访问的地方。是否已经存在我可以使用的内置“虚拟课程”?

import numpy as np

class Structure:
  pass

def construct_network():
  net = Structure()
  net.n = 100;
  net.Weights = np.random.rand(net.n, net.n)
  net.biases = np.random.rand(net.n, 1)
  return net

def a_function_operate_on_two_nets(net1, net2):
  # Use the net1 and net2 here.

2 个答案:

答案 0 :(得分:3)

python3.3添加了types.SimpleNamespace,这正是您正在寻找的。对于早期版本的python,您可能不得不依赖为类似(足够接近)的任务构建的东西 - 例如argparse.Namespace

当然,如果你真的想要结构化的(通常比非结构化的东西更喜欢),总会有collections.namedtuple

答案 1 :(得分:1)

您在文件中创建了此结构。例如,将该代码放在struct.py中 然后在另一个python脚本中写下from struct.py import Structure 或者如果您创建了其他结构,则可以使用from struct.py import *

导入所有该分支