2014-09-21 101 views
1

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

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

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. 
+1

查找到'namedtuple' – inspectorG4dget 2014-09-21 22:22:41

回答

2

python3.3 added types.SimpleNamespace这就是你要找的。对于Python的早期版本,你可能不得不依赖于为类似的(足够近的)任务构建的东西 - 例如argparse.Namespace

而且,当然总有collections.namedtuple如果你实际上想要结构(它通常首选非结构化)。

+0

有趣。你回答了我目前的问题和我将来可能会问的一些问题:) – shaoyl85 2014-09-21 22:39:13

1

您在一个文件中创建了这个结构。例如把这些代码在struct.py 然后在另一个python脚本只写from struct.py import Structure 或者,如果创建其他结构可以导入所有clases使用from struct.py import *