1 回答

TA貢獻1786條經(jīng)驗 獲得超11個贊
這就是 Flask-SQLAlchemy 元編程。班級級別的分配定義了一個模式。創(chuàng)建類的實例時,它們包含某種訪問器,以便對相同名稱的引用會self從列中生成特定值。這是可行的,因為 sqlalchemy 編寫了大量代碼來實現(xiàn)它。
這不是普通的 python 類的工作方式。您不需要在常規(guī) Python 類的類級別定義屬性。對于常規(guī)類,訪問檢查self.bar“bar”是否是實例本地的,然后檢查該類上是否存在“bar”。它就像一個后備方案,但并不需要有一個。無論哪種情況,設(shè)置self.bar都會在實例中創(chuàng)建有效的設(shè)置。如:
>>> class Foo:
... bar = 1
... def get_bar(self):
... return self.bar
... def set_bar(self, val):
... self.bar = val
...
>>> foo = Foo()
>>> print(Foo.bar, foo.bar, foo.get_bar())
1 1 1
>>> foo.set_bar(999)
>>> print(Foo.bar, foo.bar, foo.get_bar())
1 999 999
在學(xué)習(xí) Python 時,sqlalchemy、numpy 和 pandas 等模塊背后的魔力可能會讓人們對該語言的工作原理產(chǎn)生錯誤的印象。
添加回答
舉報