python - 在Python SQLAlchemy模型中,为什么有些属性被初始化两次?

标签 python sqlalchemy

在这段代码中:

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/

相关文章:

python - 有没有相当于 tribble 的 panda ?

python - 如何比较预测频率数据与实际频率数据?

python - sqlalchemy 中的多对多交集

python - 我需要使用 SQLAlchemy session 吗?

sqlalchemy - 更新 Snowflake 中的混合和嵌套对象

python - 在 SQLAlchemy 模型字段上接受多种类型

python - windows下scons的问题

python - 如何获取边界框区域内热图的平均值

python - 在 Sqlalchemy/Postgres 中使用绑定(bind)参数执行 WHERE IN

python - 如何提取*args