编程语言
首页 > 编程语言> > python-长生不老药反射

python-长生不老药反射

作者:互联网

我定义了一些效果很好的实体;用于元编程问题.现在,我需要反映模型中定义的字段属性.

例如:

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

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

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

解决方法:

您可以像在Python中的任何地方一样在Elixir中进行自省-使用dir(Foo)获取Foo类的所有属性名称,使用getattr(Foo,thename)提取给定名称的属性,并使用type检查属性的类型(theattr)或isinstance等.作为属性传递给任何Relationship子类(包括OneToMany和ManyToMany)的构造函数的字符串“ Bar”最终作为Relationship子类的所得实例r的r.of_kind属性结束.

Python标准库中的模块检查可能是进行内省的一种更友好的方法,但是在许多情况下dir / getattr / isinstance& c是完全可以接受的.

标签:pylons,sqlalchemy,python-elixir,python
来源: https://codeday.me/bug/20191107/2004006.html