我有以下代码:
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类型?
答案 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()