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

Atm*_*tma 1 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)
Run Code Online (Sandbox Code Playgroud)

这输出:

<bound method URLField.get_internal_type of <django.db.models.fields.URLField: my_field>>
Run Code Online (Sandbox Code Playgroud)

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

aba*_*ert 8

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

  • im_func 是功能对象.
  • im_class 是方法来自的类.
  • im_selfself方法绑定的对象.

所以,就这样做:

print my_type.im_self
Run Code Online (Sandbox Code Playgroud)

在Python 3.x中,im_func重命名__func__,im_self重命名__self__,并且im_class已经消失.

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


这个细节深深埋藏在文档中,但inspect模块文档有一个方便的表格,简要说明了各种内置类型中最重要的特殊字段的作用.

这篇博客文章有更多细节,如果你想知道它为什么会这样,那么这些文章主要记录在2009年3月至2010年6月期间Guido的Python历史博客上.


Atm*_*tma 5

谢谢@Martijn Pieters

答案是调用该方法:

my_type = field.get_internal_type()
Run Code Online (Sandbox Code Playgroud)