3

我定义了一些工作正常的实体;对于元编程问题。我现在需要反映模型中定义的字段属性。

例如:

class Foo(Entity):
      bar = OneToMany('Bar')
      baz = ManyToMany('Baz')

设置了哪种类型的关系:“ManyToMany”、“OneToMany”甚至是普通的“Field”,以及关系目标?

有什么简单的方法可以反映 Elixir 实体吗?

4

1 回答 1

4

您可以像在 Python 中的任何地方一样在 Elixir 中进行自省——获取 with 的所有属性名称,提取给定名称的属性class Foowith ,使用or检查属性的类型,等等。作为属性传递给的字符串任何子类(包括and )的构造函数最终作为关系子类的结果实例 r 的属性。dir(Foo)getattr(Foo, thename)type(theattr)isinstance'Bar'RelationshipOneToManyManyToManyr.of_kind

Python 标准库中的模块inspect可能是一种更友好的自省方式,但 dir / getattr / isinstance &c 在许多情况下是完全可以接受的。

于 2009-04-26T18:01:52.847 回答