【问题标题】:passing self to a function将 self 传递给函数
【发布时间】:2016-04-27 19:04:26
【问题描述】:

此代码在一个类中。我需要访问类自身中定义的变量。我怎样才能将 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 作为新参数。

【问题讨论】:

标签: python django


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 2016-08-02
    • 2020-07-15
    • 1970-01-01
    • 2021-12-23
    • 2016-04-27
    相关资源
    最近更新 更多