如何向Julia类型添加新字段?

时间:2017-03-13 21:10:47

标签: julia

在Python中,可以使用setattr向对象添加新属性,如下面的代码

class Foobar:
    def __init__(self):
        pass

foobar = Foobar()
setattr(foobar, 'foo', 123)

print(foobar.foo)

输出

123

我知道在Julia中有setfield!但它不允许在Python中添加像setattr这样的新字段。
所以我的问题是有一种方法可以将新字段添加到复合类型的对象中吗?

1 个答案:

答案 0 :(得分:12)

  

是否有办法将新字段添加到复合类型的对象?

没有。 Julia是故意设计的,没有这种局部动态行为。如果您需要动态添加和删除字段,那么您实际上将该对象用作具有不同语法的字典。在Julia中,您将使用实际字典 - Dict或其他关联集合 - 用于此类用法。这没有比像Python这样的语言中的对象更差的性能,尽管它的性能会比Julia中的静态定义类型更差,但这是具有动态字段的对象的固有成本 - 这正是对象无法工作的原因朱莉娅的方式。