问题标签 [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 回答
111 浏览

python - 有没有办法静态解决这种循环依赖?

我有一些相互关联的python类,它们试图模仿graphql模式(模式本身不相关,我在这里发布了基本案例以重现问题)。

GraphQL 架构如下所示:

从模式设计的角度来看,这个模式没有任何问题,它是一个有效的模式,并且我已经有一个使用这种关系运行的数据库(它只是意味着:一个用户可能有多个订单,一个订单可能只有一个用户创造了它)。

在 python 方面,事情变得有点混乱。

我希望以下代码能够工作:

文件:模型/模型.py

文件:模型/User.py

文件:模型/Order.py

然后我可以做这样的事情:

文件:.py

由于循环依赖(用户需要之前定义的订单类型,以及需要用户的订单),此代码不起作用。

我发现的解决方法是使用 importlib 延迟导入模型:

这个解决方案有效,但失去了事先知道字段类型的能力,而且我认为在构建复杂关系时它会更慢(数百个项目,对象有几个层次)。

这就是为什么我正在寻找更好的方法来解决这个问题,有什么想法吗?

0 投票
1 回答
66 浏览

python - 如何使用 attrs 从字符串反序列化为不可变对象?

我有一个字符串日志,我想用尽可能少的样板代码反序列化为一个对象。

当前解决方案不使用 attrs:

我可以attrs用来将此日志反序列化为不可变对象吗?

0 投票
0 回答
300 浏览

python-3.x - pytype 使用 attrs 默认工厂装饰器引发错误

mypy没有错误,但pytype无法处理此代码并上升attribute-error。我该如何解决?

代码:

日志:

版本:

PS我想不# pytype: disable=attribute-error排队@x.default

0 投票
4 回答
1191 浏览

python-3.x - 无法导入scrapy

我试图在 python 3.7 中导入 scrapy,得到了这个错误:

我也使用“pip install --upgrade attrs”更新了 attrs,但仍然保持不变。

0 投票
2 回答
125 浏览

python-3.x - 如何获得不可变对象的修改副本?

如何获得不可变对象的修改副本?

some_magical_method在这个剪断中怎么可能看起来像?

背景:我想为我的配置使用不可变对象。但我也想在处理非常相似的配置时避免代码重复,例如单元测试

0 投票
1 回答
236 浏览

python-attrs - Python Attr:使用其他属性的转换器?

Python attrs 中有没有办法让转换器引用自身的属性?现在我正在使用__attr_post_init__,但感觉像是一种罪过。

0 投票
1 回答
37 浏览

python - 为什么 object.__setattr__.__get__(self, Attribute) 在 attrs/_make.py 中用于 Attribute 的 __init__

我喜欢使用attr并决定阅读一些源代码。引起我注意的一部分是以下(来源):

其中_obj_setattr定义为object.__setattr__

我很好奇为什么会这样做。我已经阅读了这个stackoverflow 响应,发现它非常有用,但它没有涵盖关于__get__. 我已经阅读了一些内容,descriptors但还没有完全理解它们。所以,我的问题是,为什么使用_obj_setattr.__get__(self, A)("name", name), 而不是object.__setattr__(self, "name", name)?

0 投票
2 回答
604 浏览

python - 在 attrs 中更改冻结类的属性

我希望找到一种在初始化为特定值时更改 url 的方法,而不会丢失类的冻结属性,这是否可能?

0 投票
2 回答
728 浏览

python-attrs - attrs 转换器的装饰器

是否有使用 attrs 转换器的装饰器?

有 and 的装饰器validatordefault但我看不到converter.

可能吗?

我更喜欢将函数作为类内的“方法”,而不是类外的全局函数。装饰器允许:)

验证器的示例代码段。

我想使用转换器做类似的事情。将一些输入字节修剪为上限的示例。

0 投票
1 回答
112 浏览

python - 为什么在创建类实例后不能为属性赋值?

我刚刚发现attrs,它实际上对我即将进行的项目非常有用。在玩耍时,我发现了一些我无法向自己解释的行为。

我有这段代码:

使用foobar.defaults.update(firstname='Thomas')也可以foobar = FooBar(defaults={'firstname':'Thomas'}),但不应该直接分配吗?还是我使用的方式on_setattr不对validator

当我尝试使用 int 设置属性时,即foobar.defaults = 1正确引发了 ValueError。

任何提示表示赞赏。问候,托马斯