python - 灵药反射

标签 python sqlalchemy pylons python-elixir

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

例如:

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

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

是否有任何简单的方法来反射(reflect) Elixir 实体?

最佳答案

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

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

关于python - 灵药反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/791150/

相关文章:

Python Tkinter Tk/Tcl 使用问题

python - Flask-SQLAlchemy 转换查询中的字段

python - SQLAlchemy - 如何从 ResultProxy 访问列名并写入 CSV header

python - 使用 Pylons 和 WMI 时出现 "Win32 exception occurred releasing IUnknown at..."错误

python - 从张量列表创建参差不齐的张量

python - 如何使用 pytest、fastapi 和 tortoise-orm 回滚每个测试?

python - 加入 SQLAlchemy 中的子查询

python - 如何开发一个django->pylons文件上传工具?

python - 如何将 pylons(粘贴)webtest 与多个同名复选框一起使用?

python - gi.repository Windows