gpt4 book ai didi

python - 调用外部函数而不发送 'self' arg

转载 作者:太空狗 更新时间:2023-10-30 00:45:39 27 4
gpt4 key购买 nike

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

# 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。

谢谢。

最佳答案

发生这种情况是因为在 Python 中函数是 descriptors ,所以当它们在类实例上被访问时,它们将它们的第一个(假定的 self)参数绑定(bind)到实例。

您可以在类上访问 _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})

或者,您可以将其包装在 staticmethod 中防止它被绑定(bind)到实例:

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

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

关于python - 调用外部函数而不发送 'self' arg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16039459/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com