私はFlaskでウェブ開発を学んでいます。私はSQLAlchemyを使用しています。典型的なデータベースオブジェクトは、次のように構成されています。SQLAlchemyモデル変数クラスまたはオブジェクトタイプですか?
私の質問は、これらすべてのクラス変数またはオブジェクト変数ですか?彼らは__init__
の外にあるので、クラス変数であるように見えますが、それは奇妙に思えます。これに関するポインターは素晴らしいでしょう!ありがとう!
私はFlaskでウェブ開発を学んでいます。私はSQLAlchemyを使用しています。典型的なデータベースオブジェクトは、次のように構成されています。SQLAlchemyモデル変数クラスまたはオブジェクトタイプですか?
私の質問は、これらすべてのクラス変数またはオブジェクト変数ですか?彼らは__init__
の外にあるので、クラス変数であるように見えますが、それは奇妙に思えます。これに関するポインターは素晴らしいでしょう!ありがとう!
Role
のタイプColumn
のフィールドは、実際にはクラス変数です。しかし、彼らはdeclarative.aqi.DeclarativeMeta.__init__()
で発生した役割の建設、我々はメタクラスdeclarative.aqi.DeclarativeMeta
(declarative_base()の戻り値)でBase
から継承された役割を定義する理由は
InstrumentedAttribute
がデータ記述子である時にInstrumentedAttribute
に置き換えられますこれは、__get__
と__set__
をインスタンス辞書に適用したものです。その結果、インスタンスを使用して操作を実行できます。次の例で
、r.name
データ記述子である、r.name = 'hello'
はRole.name.__set__(r, 'hello')
と同等である - >r.__dict__['name'] = 'hello'
r = Role()
r.name = 'hello'
これは通常のPythonクラスコード異なる見えるが、それらは実際のインスタンス(オブジェクト)の変数です。おそらく、より深いレベルでフラスコを知っている人は、それがなぜであるかについてのより多くの情報を与えることができます。私の推測はそれがオブジェクトの継承と関係していることです。 – coralvanda