python类中的元数据

python类中的元数据,python,metadata,Python,Metadata,我在一些python库中看到了在对象内部使用名为Meta的类定义的常见模式,如django模型或tastypie资源。还有一些人不使用这个,比如芹菜任务 有什么明显的原因吗?从tastype代码中,我可以看到一些元类正在处理内部的元类定义。元数据和模型的普通属性有什么区别吗?在django模型中有点容易说:属性只是像age=IntegerField这样的字段,但我可以在名为fields的属性中思考,或者只使用_attrs或_attrs作为元数据 这是不是一个好的实践? 再见 编辑: 我想补充一点

我在一些python库中看到了在对象内部使用名为Meta的类定义的常见模式,如django模型或tastypie资源。还有一些人不使用这个,比如芹菜任务

有什么明显的原因吗?从tastype代码中,我可以看到一些元类正在处理内部的元类定义。元数据和模型的普通属性有什么区别吗?在django模型中有点容易说:属性只是像age=IntegerField这样的字段,但我可以在名为fields的属性中思考,或者只使用_attrs或_attrs作为元数据

<>这是不是一个好的实践?

再见

编辑:

我想补充一点:

有没有更多的图书馆以类似的方式处理这个问题?或者有不同的方法来做同样的事情?这里有什么共同的模式我可以检查一下吗?谢谢

我想创建一个库,我喜欢这两种方式,并且与这两个库没有太多的关系,因此选择其中一个不会有一致性问题


再见。

不,除了约定之外没有其他区别:TastyPie只是使用Django模型用于区分“数据”和“元数据”(关于数据的数据)的相同约定

元类和
Meta
class 另外,元类可以访问类属性和内部类,所以这并没有起到任何重要作用

为什么不
\u attrs
\u attrs
? 您可以将其命名为
\u attrs
(可能不是
\u attrs
,因为名称混乱机制),但约定不同(前导下划线表示API不是公共的)

为什么在TastyPie中使用
Meta
? 至于TastyPie和用于存储选项的
Meta
内部类的原因,我建议观看Daniel Lindsley(TastyPie的创建者)名为“API设计技巧”的演示,该演示发生在最新的DjangoCon US 2012年:-它清楚地显示了使用这种特定方法构建TastyPie API的原因

有一点关于一致性 说到“这被认为是一个好的实践吗?”部分,我会引用PEP8的一部分(“风格指南”),尤其是:

风格指南是关于一致性的。与本风格指南保持一致非常重要。项目内的一致性更为重要。一个模块或功能内的一致性是最重要的

因此,我将这种方法(tastypi中的方法)视为与开发它的框架(即:Django)一致的标志

关于良好实践的一句话
是的,这是一个很好的实践(保持一致)。使用Python样式指南(PEP8)中的命名约定也是一个很好的实践,因为它被广泛采用。然而,使用
Meta
内部类只是一种约定——如果您正在为芹菜任务编写一些扩展,最好遵守它们的命名约定,以免混淆用户。

谢谢,我理解一致性的要点,这很有意义。我想改变一下我的问题,是否有更多的图书馆以类似的方式处理这个问题?或者有不同的方法来做同样的事情?这里有什么共同的模式我可以检查一下吗?谢谢我想创建一个库,我喜欢这两种方式,并且与这两个库没有太多的关系,因此选择其中一个不会有一致性问题。