如何从python中绑定方法中提取值?

时间:2013-11-19 22:52:36

标签: python django django-models

我有以下代码:

model =  MyModel()
field = model._meta.get_field_by_name('my_field')[0]
my_type = field.get_internal_type
print str(my_type)

输出:

<bound method URLField.get_internal_type of <django.db.models.fields.URLField: my_field>>

如何从ubound方法输出中提取URLField类型?

2 个答案:

答案 0 :(得分:7)

在Python 2.x中,绑定方法有三个属性:

  • im_func是函数对象。
  • im_class是该方法的类。
  • im_self是方法绑定的self对象。

所以,就这样做:

print my_type.im_self

在Python 3.x中,im_func重命名为__func__im_self重命名为__self__im_class已消失。

在2.7中,如果您愿意,可以使用3.x名称代替2.x名称。


详细信息深入到文档中,但inspect模块文档有一个方便的表格,可以简要说明各种内置类型中最重要的特殊字段的作用。< / p>

This blog post有更多详细信息,如果您想知道为什么它的工作原理是这样的,那么大部分内容都会记录在3月份之间Guido History of Python博客上的几个不同帖子中2009年和2010年6月。

答案 1 :(得分:4)

感谢@Martijn Pieters

答案是改为调用方法:

my_type = field.get_internal_type()