猿问

如何强制/警告开发人员对待类/django 模型的方式

我们有一个Django项目,今年我多次遇到这个问题。


我将简化示例:


class MyModel(Model):

    my_attr = ....

    ...


    def get_my_attr_safe():

        if not self.my_attr:

            return somecalculation()

        return self.my_attr

我想强制开发人员使用get_my_attr_safe()而不是my_attr.


这是一个庞大而复杂的模型。


我的想法是以某种方式覆盖__getattribute__并引发异常,如果它被直接调用,但我认为这行不通。而且,Django当然有时需要ModelFields直接调用,所以我不能就这样去做。


如果可能Exception的method话,我想提出或确保他们获得他们必须使用的信息。


例如,我需要他们在模板中随处使用该方法:


{{ obj.get_my_attr_safe }}

而不是


{{ obj.my_attr }}

解决方案不一定是Pythonic,也许有一种方法可以PyCharm只使用。就足够了。


千巷猫影
浏览 134回答 2
2回答

慕莱坞森

在这里使用下划线可能会有所帮助:class MyModel(Model):    _my_attr = None    def get_my_attr_safe(self):        if self._my_attr is None:            self._my_attr = somecalculation()        return self._my_attr    my_attr = property(get_my_attr_safe)
随时随地看视频慕课网APP

相关分类

Python
我要回答