将自我传递给一个函数

时间:2016-01-21 13:38:49

标签: python django

此代码位于类中。我需要访问classe的self中定义的变量。我如何将self传递给entry_deletion_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作为新参数。

1 个答案:

答案 0 :(得分:0)

您正在向@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会是什么?),然后你可以将实例方法注册为信号的接收者。

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

相关问题