gpt4 book ai didi

Python初学者与类变量

转载 作者:太空宇宙 更新时间:2023-11-04 05:34:07 25 4
gpt4 key购买 nike

我正在尝试在我的 View 中定义一个变量,如下所示:

class PostMessageView(LoginRequiredMixin, generic.TemplateView):
url_redirect = None

def post(self, request, *args, **kwargs):
return redirect(self.url_redirect)

我知道这不是好方法,并且有内置类,但我的问题是不是。我的问题是关于纯 Python(我猜)。如果我做一个后代,我可以这样做,它有效:

class ContactDetailView(PostMessageView):
template_name = 'my_home/contact_detail.html'
url_redirect = 'my_profile_contact_detail'

我的问题是当我想用动态值更改 url_redirect 时,例如:

class ContactDetailView(PostMessageView):
template_name = 'my_home/contact_detail.html'

def get_context_data(self, **kwargs):
self.url_redirect = self.request.build_absolute_uri(self.request.path)

然后我得到 argument of type 'NoneType' is not iterable 因为,我猜,self.url_redirect 不会覆盖 url_redirect

如何在 Python 中正确地做到这一点?

最佳答案

您可以使用 property为此:

class ContactDetailView(PostMessageView):
template_name = 'my_home/contact_detail.html'

@property
def url_redirect(self):
return self.request.build_absolute_uri(self.request.path)

这个url_redirect 方法本质上就像类的一个属性。使用像这样的装饰器版本将使其成为一个 setter/getter 。如果您还想创建一个 setter,您可以使用 property 作为方法。

关于Python初学者与类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36160949/

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