调用外部函数而不发送“self”参数

2024-10-04 09:17:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为Django应用程序编写测试,并使用测试类上的一个属性来存储它应该测试的视图,如下所示:

# IN TESTS.PY
class OrderTests(TestCase, ShopTest):
    _VIEW = views.order

    def test_gateway_answer(self):
        url = 'whatever url'
        request = self.request_factory(url, 'GET')
        self._VIEW(request, **{'sku': order.sku})


# IN VIEWS.PY
def order(request, sku)
    ...

我想我遇到的问题是因为我调用了OrderTests类的一个属性,python假设我要发送self,然后order得到了错误的参数。容易解决。。。只是不把它用作类属性,但我想知道是否有一种方法可以告诉python在这种情况下不要发送self。在

谢谢。在


Tags: djangoinpyselfview视图应用程序url
1条回答
网友
1楼 · 发布于 2024-10-04 09:17:59

这是因为在Python中函数是descriptors,因此当在类实例上访问它们时,它们将第一个(假定为self)参数绑定到实例。在

您可以在类上访问_VIEW,而不是在实例上:

class OrderTests(TestCase, ShopTest):
    _VIEW = views.order

    def test_gateway_answer(self):
        url = 'whatever url'
        request = self.request_factory(url, 'GET')
        OrderTests._VIEW(request, **{'sku': order.sku})

或者,您可以将其包装在^{}中,以防止它绑定到实例:

^{pr2}$

相关问题 更多 >