1 回答

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