擴展上面的Tadeck的Django答案,在Django中使用'class Meta:'也只是普通的Python。
內部類是一個方便的名稱空間,用於類實例之間的共享數據(因此名稱元數據爲'元數據',但你可以稱它爲任何你喜歡的東西)。雖然在Django它通常只讀配置的東西,沒有什麼可以阻止你改變它:
In [1]: class Foo(object):
...: class Meta:
...: metaVal = 1
...:
In [2]: f1 = Foo()
In [3]: f2 = Foo()
In [4]: f1.Meta.metaVal
Out[4]: 1
In [5]: f2.Meta.metaVal = 2
In [6]: f1.Meta.metaVal
Out[6]: 2
In [7]: Foo.Meta.metaVal
Out[7]: 2
您可以在Django探索它直接過如:
In [1]: from django.contrib.auth.models import User
In [2]: User.Meta
Out[2]: django.contrib.auth.models.Meta
In [3]: User.Meta.__dict__
Out[3]:
{'__doc__': None,
'__module__': 'django.contrib.auth.models',
'abstract': False,
'verbose_name': <django.utils.functional.__proxy__ at 0x26a6610>,
'verbose_name_plural': <django.utils.functional.__proxy__ at 0x26a6650>}
但是,在Django你更可能想要探索_meta屬性,該屬性是創建模型時由模型元類創建的Options對象。那就是你可以找到所有的django類'meta'信息的地方。在Django中,Meta僅用於將信息傳遞到創建_meta選項對象的過程中。
題目問關於Python元,但問題似乎問的Django元 - 你問哪一個? – ckhan 2012-04-27 03:01:53