抱歉,标题太混乱了。你知道吗
我想做以下工作:(类似于Lisp中的defstruct
)
def mkstruct(structname, field_dict):
# create a function called "structname" and get/set functions
# called "structname_get(s, field_name)" and "structname_set(s, field_name, value)"
# Create a struct "lstnode"
mkstruct("lstnode", {ndkey : 0, nxt: None})
# Make a new struct
node = lstnode()
node_set(node, "ndkey", 5)
v = node_get(node, "ndkey") # v should be 5
这可以在C中通过宏定义来完成。我不使用类的原因是因为我创建的“struct”将“绑定”到数据库(在本例中只是某种格式的文本文件)。我不想占用任何与对象相关联的内存—我将用一个数字来表示结构(如果您愿意的话,可以用一个对象ID)
在我看来,您要查找的内容已经由
type
内置提供:如果只需要
field_dict
中的键作为结构的成员,可以将'__slots__'
添加到field_dict
。你知道吗注意:这并没有实现任何setter或getter,但是正如注释中已经指出的那样,在使用类时并不真正需要它。你知道吗
这应该是朝着你想要的方向迈出的一步:
在python中完成这项工作似乎并不容易——经过一些研究之后。将内部函数添加到全局名称空间的唯一方法是修改globals()dict,这相当尴尬。你知道吗
至于我自己的问题,我愿意做以下几点:
相关问题 更多 >
编程相关推荐