Python/Django:数据库模型中字段“类型”的同义词(保留的内置符号)

Posted

技术标签:

【中文标题】Python/Django:数据库模型中字段“类型”的同义词(保留的内置符号)【英文标题】:Python/Django: synonym for field "type" in database model (reserved built-in symbol) 【发布时间】:2012-05-17 22:57:32 【问题描述】:

我创建了一个 django 项目。它包含一个具有“type”属性的模型类。我认为“类型”是描述该字段最合适的术语,因为它定义了条目的类型。

class Vehicle(models.Model):
    TYPE = (
        (u'car', u'Car'),
        (u'motorcycle', u'Motorcycle'),
        (u'airplane', u'Airplane'),
    )

    type = models.CharField(max_length=100, choices=TYPE)

我不太喜欢“种类”或“类别”,因为它们不像“类型”那么通用。

问题

Assignment to reserved built-in symbol: type
    这是一个警告,所以这是个问题吗? 如果是,我有什么选择? 对于“类型”一词,您有什么好的替代方法吗?

【问题讨论】:

type 不是严格的保留字,只是不建议使用。此外,编辑器中的语法突出显示,对我来说是 Vim,会错误地突出显示它,这是我不使用它的最强有力的原因 =) 【参考方案1】:

我不同意其他答案。无需更改。

在我看来,混淆的风险很小,因为除非通过实例,否则您永远不会访问该属性。 my_vehicle.type 不容易与(例如)type(my_vehicle) 混淆。

【讨论】:

没错,但现在重命名太容易了,还有很多其他词可以使用。 同意 andrew,因为当您或其他人回顾代码时,这可能会防止将来出现错误 此外,他在使用任何 linter 时都会收到警告,因此他的选择是忽略错误(烦人)或添加一些注释宏以暂时删除错误(丑陋),或关闭错误(不好)。 这也是合理的,但我同意 Andrew Barret 的观点:我想摆脱那个错误 这应该是公认的答案。 Django 创建了一个名为id 的字段,id() 是一个 Python 内置函数。没有人混淆这两者。同样的故事,没问题。【参考方案2】:
    让变量名隐藏其中一个总是一个坏主意 python's built-ins。它会使阅读您的代码的人感到困惑,他们希望 type 意味着特定的东西。与其他用户的可读性相比,它的重要性不那么重要,它还可能导致语法高亮。 重命名变量。 (这确实是最好的做法 - 您可以保留它,但现在可以轻松重命名) 有很多potential options,可能是classificationcategory。我知道你说你不喜欢category,但我看不出它有什么不一般的地方?

对于您的特定应用程序来说,这可能是多余的(需要了解更多),但 django 确实支持model inheritance。

【讨论】:

真的。或许,品类确实是最好的选择。另外,感谢您提供指向模型继承的指针【参考方案3】:

好吧,无论是警告还是错误,我都会避免冒像您这样的情况的风险:) 在我看来,您可以做的更好的事情是更改变量名称而不会失去任何意义或凝聚力。如果仅用于该特定类别,您可以将其称为“v_type”,意思是车辆类型的缩写。如果您要扩展该类,您将使用另一种车辆类型对其进行扩展,因此在您的情况下“v_type”将适合。

【讨论】:

这可行,但“v_type”或“vehicle_type”对我来说不合适。那么我将不得不以相同类型命名所有其他字段:“v_name”、“v_price”、... 这完全取决于你 :) 我倾向于为每个变量使用相同的标识符类型(正如你所指出的,v_type“需要”也改变 v_name),因为你决定使用“类别” ,缩短版本的“猫”应该可以解决问题,并且也是用于识别类别的常用变量名称(嗯,常见的意思是我已经看过很多次了)我喜欢你的帖子,顺便说一句!

以上是关于Python/Django:数据库模型中字段“类型”的同义词(保留的内置符号)的主要内容,如果未能解决你的问题,请参考以下文章

Python / Django中多个抽象模型继承中的字段菱形模式

python - django(ORM常用字段类型)

Python Django:从空模型字段获取无值

python django模型内部类meta

python django仅显示对象/模型中出现一次的字段[重复]

python django单元测试文件字段模型示例