python类中的元数据

2024-10-01 17:31:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一些python库中看到了在对象中使用名为Meta的类定义的通用模式,比如django模型或tastyperesources。还有一些其他人不使用这个,比如芹菜任务。在

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

这算是一个好的做法吗?

再见。在

编辑时间:

我想补充一点:

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

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

再见。在


Tags: 数据对象django代码模型属性定义方式
1条回答
网友
1楼 · 发布于 2024-10-01 17:31:39

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

元类和Meta

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

为什么不_attrs或{}?在

您可以将其命名为_attrs(由于名称混乱机制,可能不是{}),但约定不同(前导下划线表示API不是公共的)。在

{cdype}为什么?在

至于tastype和Meta内部类存储选项的原因,我建议观看Daniel Lindsley(tastype的创建者)名为“API Design Tips”的演示文稿,这发生在最新的djangoconus2012:http://www.youtube.com/watch?v=IKQzXu43hzY-它清楚地说明了使用这种特定方法构建tastypeapi的原因。在

一点关于一致性的问题

当谈到“时,这被认为是一个好的做法吗?“部分,我引用PEP8的一部分(“样式指南”,尤其是part about consistency):

A style guide is about consistency. Consistency with this style guide is important. Consistency within a project is more important. Consistency within one module or function is most important.

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

一句关于良好实践的话

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

相关问题 更多 >

    热门问题