我使用的是Django,它允许人们通过使用class Meta
向类添加额外的参数。
class FooModel(models.Model):
...
class Meta:
...
我在Python文档中找到的唯一内容是:
class FooMetaClass(type):
...
class FooClass:
__metaclass__ = FooMetaClass
然而,我不认为这是一回事。
发布于 2013-08-08 12:23:23
扩展Tadeck的Django回答,在Django中使用'class Meta:‘也是普通的Python。
内部类是一个方便的命名空间,用于在类实例之间共享数据(因此得名为Meta,表示“元数据”,但您可以随心所欲地叫它)。虽然在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
属性,它是在创建模型时由模型metaclass
创建的Options
对象。在那里你可以找到所有Django类的“元”信息。在Django中,Meta
只是用于将信息传递到创建_meta
Options
对象的过程中。
发布于 2012-04-27 11:02:43
Django的Model
类专门处理一个名为Meta
的属性,它是一个类。这不是一般的Python的事情。
Python元类则完全不同。
发布于 2019-03-11 18:53:42
内部Meta类文档:
这个django
模型元数据文档是“任何不是字段的内容”,比如排序选项(ordering), database table name (db_table), or human-readable singular and plural names (verbose_name and verbose_name_plural)
。这不是必需的,向模型添加Meta类完全是可选的。https://docs.djangoproject.com/en/dev/topics/db/models/#meta-options
https://stackoverflow.com/questions/10344197
复制相似问题