问题标签 [python-attrs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何避免 __init__ 中的“self.x = x;self.y = y;self.z = z”模式?
我看到像这样的模式
非常频繁,通常带有更多参数。有没有避免这种乏味重复的好方法?类应该继承自namedtuple
吗?
python - 使用 Python 创建 JSON
我想使用 Python 创建 JSON。
由于我没有找到可以帮助我的库,我想知道是否可以检查 Python 文件中类的顺序?
例子
如果我 import example
,我想知道类的顺序。在这种情况下,它是 [Foo, Bar] 而不是 [Bar, Foo]。
这可能吗?如果“是”,怎么做?
背景
我对 yaml/json 不满意。我有一个模糊的想法来通过 Python 类创建配置(只有类,而不是对象的实例化)。
欢迎帮助我实现目标的答案(使用易于使用且有趣的工具创建 JSON)。
python - Python attrs 库和引用实例方法
如何转换下面的类以使用attrs 库:
具体来说,如何处理一个参数对另一个参数的初始化的依赖性?在我最初的尝试中,我从这样的课程开始:
但是我不确定如何处理该template
属性?我最初的想法是这样做:
不过,我想知道是否有更好的方法来实现这一点?
python - 如何从另一个命名元组推断或子类型命名元组?
前言
我想知道如何以Python的方式概念化数据类。具体来说,我说的是 DTO(数据传输对象。)
我在@jeff-oneill 问题“<a href="https://stackoverflow.com/questions/3357581/using-python-class-as-a-data-container/">Using Python class as a数据容器”,其中@joe-kington 有一个使用内置namedtuple
.
问题
在 python 2.7 文档的第 8.3.4 节中,有一个很好的例子来说明如何组合几个命名元组。我的问题是如何实现反向?
例子
考虑文档中的示例:
如何从“像素”实例中推断出“颜色”或“点”实例?
最好是蟒蛇精神。
python - 完美转发 - 在 Python 中
我是一个大量使用继承的 Python 项目的维护者。有一个反模式给我们带来了一些问题并且使阅读变得困难,我正在寻找一种解决它的好方法。
问题是将非常长的参数列表从派生类转发到基类 - 主要但不总是在构造函数中。
考虑这个人为的例子:
此时,一切看起来都像是DerivedA
——长长的参数列表,所有这些都显式地传递给基类。
不幸的是,在过去的几年中,我们遇到了一些问题,包括忘记传递参数并获取默认值,以及没有注意到派生类中的一个默认参数与默认默认值不同。
它还使代码不必要地庞大,因此难以阅读。
DerivedB
更好并解决了这些问题,但有一个新问题是派生类中方法的 Python 帮助/sphinx HTML 文档具有误导性,因为许多重要参数隐藏在**kwds
.
有没有办法将正确的签名——或者至少是正确签名的文档——从基类方法“转发”到派生类方法?
python - 何时以及为什么应该使用 attr.Factory?
何时以及为什么要使用attr.ib(default=attr.Factory(list))
over attr.ib(default=[])
?
从文档中我看到工厂用于生成新值,如果您使用带有输入的 lambda 表达式,这很有意义;但是,如果您只是生成一个空列表,我不明白为什么要使用它。
我在这里想念什么?
python - super() 和显式 super(Cl,self) 有什么区别(带有 __slots__ 和 attrs)
我正在使用attrs
python 包,结合继承和插槽。我想从派生方法中调用父类的方法。问题如下所示:
我得到:
TypeError: super(type, obj): obj 必须是类型的实例或子类型
该问题似乎是由 attrs(具有显式__slots__=()
工作的未装饰类)、插槽(常规@attr.s
装饰类工作)和普通super()
调用(super(Derived, self)
工作)的组合触发的。
我想了解super()
与显式版本的行为有何不同super(Derived, self)
,因为文档说它们“做同样的事情”
python - 仅在 __attrs_post_init__ 结束后运行属性验证器
我有:
在这里如何正确设置验证?我想在实例化后验证 self.number 。
python - 如何模拟 attr.ib 验证器
我有一个 attrs 类:
我需要模拟这个验证器。