gpt4 book ai didi

python - 覆盖类属性,使用引用类的通用方法

转载 作者:行者123 更新时间:2023-12-01 05:32:01 25 4
gpt4 key购买 nike

我有一个 Django 抽象模型。

class Company(models.Model):
DEFAULT_EMPLOYEES = None
employees = models.PositiveIntegerField(null=True, blank=True,
default=<<<what_goes_here>>>.DEFAULT_EMPLOYEES)
class Meta:
abstract = True

class BestBuy(Company):
DEFAULT_EMPLOYEES = 1000

我有兴趣覆盖类属性以用作默认值。我想知道是否有一种通用的方法来引用该类以使这成为可能。在 Company我意识到我可以使用 Company.DEFAULT_EMPLOYEES 引用属性,但是有没有类似的方法: "CurrentCLass".DEFAULT_EMPLOYEES .

我很确定self在这里无法工作,因为这些定义中没有实例。只是类(class)

有没有更好的方法来解决这个问题以允许子类指定默认值?任何帮助将不胜感激。谢谢。

最佳答案

如果保存时为空,最好的方法是替换保存功能以设置员工。

类似于:

class Company(models.Model):
...
def save(self, *args, **kw):
if self.employees is None:
self.employees = self.DEFAULT_EMPLOYEES
super(Company, self).save(*args, **kw)

像您所做的那样在每个子类中定义DEFAULT_EMPLOYEES

另一种选择是修改元类,这可能有点过分了。

关于python - 覆盖类属性,使用引用类的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20008211/

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