Django のメタクラス

高洛峰
リリース: 2016-10-17 14:03:10
オリジナル
1545 人が閲覧しました

Django (1.6) のフォーム関連のソース コードを見て混乱したため、Django でメタクラスがどのように使用されているかを分析するために django.forms.forms.py からいくつかのコード スニペットを抜粋しました。上記の Python モジュールの場合、コンソールは次のように出力します:

cls:

、name: NewBase、bases: (

,)、attrs: {}

cls:

、name: Form、bases: (

,)、attrs : {'__module__': '__main__'}cls:

、名前: MyForm、ベース: (

,)、属性: {'a': 1, '__module__': '__main__', 'b': 2}

コード内で MyForm のメタクラスは直接指定されていませんが、MyForm は Form を継承し、Form は DeclarativeFieldsMetaclass によって生成された "NewBase" という名前のクラスを継承するため、実際には DeclarativeFieldsMetaclass が MyForm のメタクラスになります。

関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート