Estendendo la risposta di Djad di Tadeck in alto, l'uso di "classe Meta:" in Django è anche normale Python.
La classe interna è un comodo spazio dei nomi per i dati condivisi tra le istanze di classe (da qui il nome Meta per "metadati" ma è possibile chiamarlo come preferisci). Mentre in Django è generalmente letta solo roba di configurazione, non c'è nulla che impedisca di cambiarla:
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
è possibile esplorare in Django direttamente anche ad esempio:
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>}
Tuttavia, in Django si è più probabile che voglia esplorare l'attributo _meta che è un oggetto Options creato dal metaclasse del modello quando viene creato un modello. È qui che troverai tutte le informazioni "meta" della classe Django. In Django, Meta è semplicemente usato per passare informazioni nel processo di creazione dell'oggetto _meta Options.
fonte
2013-08-08 04:23:23
Titolo chiede di Python meta, ma questione sembra chiedere di Django meta - quale stai chiedendo circa? – ckhan