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