在PythonSQLAlchemy模型中,为什么有些属性要初始化两次?
在这段代码中:在PythonSQLAlchemy模型中,为什么有些属性要初始化两次?,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框架)中的模型,稍
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
的一个特定实例初始化为一个特定值。(“thisPage()
的名称为“framistan”
)。它们不会被初始化两次。第一种情况是定义class属性(并将我的猜测指定为它的描述符),第二种情况是将实际实例的属性初始化为给定值
self.name = name