问题标签 [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.

0 投票
1 回答
734 浏览

python - Python attrs 类属性缓存延迟加载

我的课程看起来像这样:

我的目标是让 attrs.asdict() 能够FileObject通过遍历所有 attrs 并仅在实际调用序列化而不是 on 时初始化魔术属性来序列化__init__

大多数时候,我真的不希望 Magic 库检查对象,因为它是一项昂贵的 IO 操作。

目标:
a)如何连接两个类

b)只有当我实际调用它时才实例化 ImageMagic 对象。

c) 只有一次,以便以后如果多次调用它可以重用。

有了这个,我更喜欢使用 Attrs 库。


一般不干净的解决方案是@property使用 getter,getter 检查私有_magic属性是否存在,如果不存在则加载。

然后以某种方式将该属性注册到 attrs 库,以便它可以进一步序列化。

这是一个实际解决方案的示例:

0 投票
3 回答
26175 浏览

python - 在 __init__ 中为用户类设置默认/空属性

我的编程水平不错,并且从这里的社区中获得了很多价值。然而,我从来没有在编程方面接受过太多的学术教学,也没有在真正有经验的程序员旁边工作过。因此,我有时会与“最佳实践”作斗争。

我找不到更好的地方来回答这个问题,尽管可能有讨厌这类问题的煽动者,我还是发布了这个。很抱歉,如果这让你不高兴。我只是想学习,而不是惹你生气。

问题:

当我创建一个新类时,我是否应该在 中设置所有实例属性__init__,即使它们None实际上是后来在类方法中分配的值?

results有关 的属性,请参见下面的示例MyClass

我在其他项目中发现,当类属性只出现在类方法中并且有很多事情发生时,它们可能会被埋没。

那么对于经验丰富的专业程序员来说,标准做法是什么?__init__为了可读性,您会定义所有实例属性吗?

如果有人有任何关于我可以在哪里找到这些原则的材料的链接,那么请将它们放在答案中,我们将不胜感激。我知道 PEP-8 并且已经多次搜索了我的问题,但找不到任何涉及此问题的人。

谢谢

安迪

0 投票
2 回答
1149 浏览

python - 带有 attrs 的 PyTorch 模块无法获取参数列表

attr 的包以某种方式破坏了 pytorch 的parameter()模块方法。我想知道是否有人有任何变通办法或解决方案,以便这两个包可以无缝集成?

如果没有,关于将问题发布到哪个 github 的任何建议?我的直觉是将其发布到 attr 的 github 上,但堆栈跟踪几乎完全与 pytorch 的代码库相关。

实际输出为:

预期的输出是:

0 投票
0 回答
35 浏览

python - 使用元类将派生类装饰为 attr 类

我目前正在开发一个框架,以方便为科学仪器编写控制器程序。我attrs在代码的内部部分广泛使用。我有一些代码部分公开了要派生的类,但我不想@attr.s在派生类时一开始就调用。我有一个临时解决方案,但我想知道这个决定是否会让我头疼。

在声明要进一步派生的基类时,我正在使用元类。我使用__new__元类的来装饰基类。

这是我的代码的精简版本:

FooSettings所以上面的实现给出了完美attrs装饰的正确行为。问题是我真的不想摆弄元类,因为我认为我没有完全理解它们。如果有人能说明我的方法的缺点和优点,我将不胜感激。我也愿意接受其他建议。

0 投票
1 回答
202 浏览

python - 如何使用 attrs 定义数组对象?

考虑以下数据集:

我想要做的是attrs用来定义一个数据类,这样即使使用索引号我也可以自动完成

上面的代码无效,但这是我想要完成的。

我该怎么做呢?我知道metadata,但那是不可变的。dataclasses如果这更有意义,我也愿意使用。

0 投票
1 回答
81 浏览

python - 堆叠 attrs 属性装饰器

我正在尝试为两个属性重用验证器函数。我知道我可以在外部创建函数并在验证器中引用它,但是像这样堆叠装饰器在技术上是否正确:

测试表明验证效果很好,但不确定是否发生了问题。

0 投票
2 回答
2207 浏览

python - 在 python attrs 类中,如何用我自己的覆盖生成的 __init__

所以我喜欢使用 attr 但有时我需要做自己的事情。__init__我可以用自己的方法覆盖该方法吗?

另一个例子:

0 投票
1 回答
1030 浏览

python - 在 Python 中使用 attr 模块和元类

我正在尝试使用该attr包来简单地创建一个具有属性和方法的元类,以便在 Python 3 中的进一步类定义中使用。我想使用该attrs包,因为我有很多简单的存储类,在初始化时只需要一些属性. 一切正常,除了当我尝试将元类添加到主类时,代码失败

一个简单的 MWE 将是:

对于 Python 2/3 兼容性,我通常使用 6 包和add_metaclass其中的装饰器,但如果它可以在 Python 2 或 3 中工作,我会很高兴。

0 投票
1 回答
836 浏览

python - attrs 库和超级

这是我要重构的类的玩具示例。实际上,我有更多的参数/属性,比如动量,所以有很多代码重复:

我已经开始寻找避免重复的解决方案,并且attrs图书馆似乎很合适。featuresmomentum继承没有问题。不幸的是,我找不到像 我试过的那样super(TransformBl, self).__init__(**kwargs)的构造示例,但我得到了__init__super()RuntimeError: super(): no arguments

有没有办法重新编写这个类的attrs风格?

0 投票
1 回答
98 浏览

python - attr.ib 忽略值参数

attr.ib接受一个repr可能是布尔值或可调用的参数。

要覆盖属性值的格式,请传递一个可调用的,它采用单个值并返回一个字符串。请注意,结果字符串按原样使用,即直接使用而不是调用repr()(默认)。

通过时似乎并非如此datetime.datetime.fromisoformat()

结果:

预期的:

事实上,看起来任何参数都被忽略了。这是 attr 文档中示例的轻微修改:

我在这里想念什么?