我是Python的新手。我想在python中使用类似MATLAB的结构。我已经在使用字典的stackoverflow中看到了几个解决方案,例如this和this。但是,我觉得下面的代码中的虚拟对象方法更像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.
答案 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 *