在这段代码中:
class Page(Base):
__tablename__ = 'page'
id = Column(Integer, primary_key=True)
name = Column(Text, unique=True)
data = Column(Text)
def __init__(self, name, data):
self.name = name
self.data = data
这是金字塔框架(python框架)中的一个模型,稍后将被SQLAlchemy使用,名称和数据已初始化两次:
name = Column... # First assignments.
self.name = name # Second time assignments.
在pyramid的教程中,根据python中不能重载赋值运算符的事实,“name = Column(...)”有必要吗? 或者我完全错了, name=Column(...) 有一些特殊的含义?
最佳答案
外部作用域为了类的利益而声明一个字段。内部作用域将对象的字段初始化为特定值。
name = Column(...)
正在描述 Page
类的成员之一(“Page
由一个名为“name
”的字段组成,... ),而
self.name = name
正在将 Page
的一个特定实例初始化为一个特定值。 (“此 Page()
的名称为 “framistan”
)。
关于python - 在Python SQLAlchemy模型中,为什么有些属性被初始化两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15772571/