Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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 制作Django';s CBV&x27;让我们得到一个实例方法_Python_Django_Django Class Based Views - Fatal编程技术网

Python 制作Django';s CBV&x27;让我们得到一个实例方法

Python 制作Django';s CBV&x27;让我们得到一个实例方法,python,django,django-class-based-views,Python,Django,Django Class Based Views,我目前正在构建一个Django应用程序,它使用单例对象。 我想将此对象另存为CBV变量,因为我不想为每次“get”调用初始化它 简而言之,我的问题是——你能把CBV的get函数变成实例方法而不是类方法吗? 如果是的话,我能把一个变量保存为实例变量吗 编辑-更好地解释我的问题: 我创建了一个类来处理与电子测量仪器的序列化连接。 这个类必须只有一个实例(singleton),如果创建另一个实例,则内存泄漏将使python崩溃 我希望通过以下方式将其与django一起使用: 获取对特定url地址的请求

我目前正在构建一个Django应用程序,它使用单例对象。 我想将此对象另存为CBV变量,因为我不想为每次“get”调用初始化它

简而言之,我的问题是——你能把CBV的get函数变成实例方法而不是类方法吗? 如果是的话,我能把一个变量保存为实例变量吗

编辑-更好地解释我的问题:

我创建了一个类来处理与电子测量仪器的序列化连接。 这个类必须只有一个实例(singleton),如果创建另一个实例,则内存泄漏将使python崩溃

我希望通过以下方式将其与django一起使用:

获取对特定url地址的请求-> 视图将向instrument类实例询问数据-> 实例响应数据-> 视图返回带有数据的JsonResponse

我认为最好的方法是将CBV的get方法(其与我从中获取的url相关)作为实例方法,但这不是一个很好的实践


我应该怎么做?

正如我所说,
get
是一种实例方法


但你在这里混淆了责任。一个类应该只有一个职责。视图类负责响应请求并返回响应;这与仪器的连接完全不同。这应该是一个单独的类,在模块级实例化并在视图类中使用。

get
不是一个类方法?。你可以这样做,但为什么要这样做呢?@hspandher我需要使用某个类对象,如果get不是instancemethod,我就必须为每个get重新初始化对象(当我重新初始化它时,将丢失存储的数据)这肯定是错误的方法吗?每个请求都会重新创建一个实例,您需要一个类级属性来保留请求之间的状态。而
get
是一个实例方法。但您几乎肯定不应该这样做。请确切说明您正试图做什么,以便我们可以推荐一个合适的解决方案。