Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 需要确定给定变量是实例还是类_Python_Django - Fatal编程技术网

Python 需要确定给定变量是实例还是类

Python 需要确定给定变量是实例还是类,python,django,Python,Django,我有一个接受变量的方法-change\u obj。它可以是函数或django实例。我尝试使用下面的语句找出它是一个函数还是一个django实例 obj_type=type(change_obj)。\uuu名称\uuuu#“函数”或“实例” obj_类型为Topo。在调试时发现 (Pdb) type(change_obj) <class 'applications.topo.models.Topo'> 需求-给定一个变量,需要确定它是实例还是方法。 Stack-py2.6.8和Dja

我有一个接受变量的方法-
change\u obj
。它可以是函数或django实例。我尝试使用下面的语句找出它是一个函数还是一个django实例

obj_type=type(change_obj)。\uuu名称\uuuu#“函数”或“实例”

obj_类型
Topo
。在调试时发现

(Pdb) type(change_obj)
<class 'applications.topo.models.Topo'>
需求-给定一个变量,需要确定它是实例还是方法。
Stack-py2.6.8和Django 1.3.5

您在shell中的示例类
Topo
不是很相关。它是一个,因为它不是
对象
的子类

如果将
Topo
模型导入shell,将得到与pdb中相同的结果

>>> from applications.topo.models import Topo
>>> t = Topo()
>>> type(t)
<class 'applications.topo.models.Topo'>

为什么
dir(change\u obj)
dir(type(change\u obj))
的输出非常相似。。事实上,很明显,它们应该具有相同的输出当我在python提示符中尝试相同的输出时,我得到了以下结果:>>>类Topo:。。。id=123。。。名称='T'…>>t=Topo()>>>type(t)我可以问一下这个方法应该做什么吗?听起来它可能有潜在的问题。。(我还强烈建议升级您的django,您使用的版本不再受支持)我正在某些select模型类的save()方法中记录事件。类似地,我正在记录某些方法调用的开始和结束。这将有助于整合在单个方法中完成的保存。我有一种方法记录这两种类型的数据-函数或实例。谢谢。这有帮助,我会用这个。
>>> class Topo:
...    id = 123
...    name = 'T'
...
>>> t = Topo()
>>> type(t)
<type 'instance'>
>>> from applications.topo.models import Topo
>>> t = Topo()
>>> type(t)
<class 'applications.topo.models.Topo'>
from django.db import models
t = Topo()
is_model = isinstance(t, models.model)