gpt4 book ai didi

python - 在对象的 __class__ 属性上设置属性

转载 作者:太空宇宙 更新时间:2023-11-04 10:38:38 24 4
gpt4 key购买 nike

我对设置对象的属性和在对象的 __class__ 属性上设置属性之间的区别感到有点困惑。粗略地说,obj.attrobj.__class__.attr。它们有什么区别?

前者是在一个实例上设置一个属性,而后者是在一个实例的类上设置一个属性(使该属性对所有实例可用)?如果是这种情况,那么这些新的类属性如何在 Django 请求中可用,因为该框架使用多线程?设置类变量是否使其在请求之间保持不变?

最佳答案

是的,就是在类上设置属性。但不,这不一定会使它在请求之间可用,尽管它可能会。

您的问题表明您对 Django 请求的工作方式存在误解。 Django 不一定使用多线程服务:事实上,在大多数服务器配置中,它由多个独立的进程托管,这些进程由服务器管理。同样,根据配置,这些进程中的每一个可能有也可能没有多个线程。但是无论是否涉及线程,进程始终由服务器启动和终止。

如果您在一个请求期间在 Django 中的一个类或模块上设置了一个属性,则由同一进程提供的任何后续请求都将看到该属性。但是无法保证您的下一个请求将由哪个进程提供服务。而且肯定没有办法知道同一用户是否会访问同一进程的下一个请求。

在类或模块级别设置东西可能是一些非常讨厌的线程安全错误的来源。我的建议是一般不要这样做。如果您需要跨请求保存内容,请将其存储在数据库、缓存或(尤其是特定于特定用户的情况下) session 中。

关于python - 在对象的 __class__ 属性上设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22169372/

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