Django のメタクラス

高洛峰
高洛峰オリジナル
2016-10-17 14:03:101521ブラウズ

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 までご連絡ください。