Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.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,这段代码在一个类中。我需要访问类的self中定义的变量。如何将self传递给条目_deletation _images _delete @receiver(pre_delete, sender=Document, dispatch_uid='document_delete_signal') def entry_deletion_images_delete(sender, instance, using, **kwargs): for key, value in s

这段代码在一个类中。我需要访问类的self中定义的变量。如何将self传递给条目_deletation _images _delete

    @receiver(pre_delete, sender=Document, dispatch_uid='document_delete_signal')
    def entry_deletion_images_delete(sender, instance, using, **kwargs):
        for key, value in self.SIZES.items():
            os.remove(self.base_dir + instance.image_main.name)

由于此函数使用内置参数,因此不能简单地将self作为新参数。

您正在将未绑定函数传递给
@receiver()
。您应该向其传递一个绑定方法,如下所示:

class MyClass(object):
    def entry_deletion_images_delete(self, sender, instance, using, **kwargs):
        ...

instance = MyClass()
pre_delete.connect(instance.entry_deletion_images_delete, sender=Document, dispatch_uid='document_delete_signal')
换句话说,首先您必须创建一个实例(否则,
self
会是什么?),然后您可以将实例方法注册为信号的接收器


我所展示的只是一个例子。如何实际创建实例以及何时连接接收器取决于您的用例。

可能重复的实例方法无法作为实例方法使用,您需要使用classmethod抱歉,但是什么是
self
?在你的箱子里应该放哪个东西?它不是一个
实例吗
?self是包含类
self
是当前类实例,因此在本例中,
实例
参数是您的
self
。为什么不是给你的?