2013-04-02 61 views
1

在這一段代碼:在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. 

它是在金字塔的教程中,並根據賦值運算符不能在Python中重載的事實,是「name = Column(...)」必要的? 還是我完全錯了,name = Column(...)有一些特殊的含義?

回答

2

外部範圍聲明爲類的好處的字段。內部作用域將對象的字段初始化爲特定值。

name = Column(...) 

被描述Page類的成員中的一個被初始化的Page一個特定實例(」 Page由稱爲 'name' 字段,...的),而

self.name = name 

到一個特定的值(「這個Page()有一個名字"framistan")。

0

它們沒有被初始化兩次。每一個的第一個出現是定義類屬性(並且指定我作出有教育意義的猜測是它的描述符),第二個是將實際實例的屬性初始化爲給定值。

相關問題