我有以下django模型:
class SomeProfile(models.Model):
type = models.CharField(max_length=1)
使用"输入"作为属性名称被视为不良做法?
此处属性不是阴影"键入",因此它与this one
的问题不同答案 0 :(得分:8)
它没有任何问题。它不是python's reserved keywords的成员。
但是,命名方法type()
可能会令人困惑......
答案 1 :(得分:3)
一般规则是:不要使用所采用的名称(例如type
,file
,int
等),无论他们是否在某个名称中"保留"关键词列表与否(因为python允许它,它不是真的"保留")。这对于避免在实际需要使用真实对象时遇到麻烦非常重要(没有注意到你在本地覆盖它)。
如果你真的想使用其中一个名字,只需在最后添加_
(例如type_
)。
在您的情况下,由于您将type
指定为类属性,因此只能通过其类(self.type
或SomeProfile.type
访问它才能被视为安全)。
答案 2 :(得分:0)
是的 - 这是不好的做法。从关键字角度来看,type
是非常通用的词,但不是保留关键字。即使它在您的应用程序中当前没有给出任何问题,但它可能会在将来提供,因为它可能已经在一些已经存在的库或python扩展中使用。
示例:类型用作获取变量
的TypeCast
信息的函数
name = "John"
age = 12
print type(name)
## Above line will return "<type 'str'>"
print type(age)
## Above line will return "<type 'int'>"
将type
用作attribute
是一种不好的做法。