问题标签 [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 - 有没有办法静态解决这种循环依赖?
我有一些相互关联的python类,它们试图模仿graphql模式(模式本身不相关,我在这里发布了基本案例以重现问题)。
GraphQL 架构如下所示:
从模式设计的角度来看,这个模式没有任何问题,它是一个有效的模式,并且我已经有一个使用这种关系运行的数据库(它只是意味着:一个用户可能有多个订单,一个订单可能只有一个用户创造了它)。
在 python 方面,事情变得有点混乱。
我希望以下代码能够工作:
文件:模型/模型.py
文件:模型/User.py
文件:模型/Order.py
然后我可以做这样的事情:
文件:主.py
由于循环依赖(用户需要之前定义的订单类型,以及需要用户的订单),此代码不起作用。
我发现的解决方法是使用 importlib 延迟导入模型:
这个解决方案有效,但失去了事先知道字段类型的能力,而且我认为在构建复杂关系时它会更慢(数百个项目,对象有几个层次)。
这就是为什么我正在寻找更好的方法来解决这个问题,有什么想法吗?
python - 如何使用 attrs 从字符串反序列化为不可变对象?
我有一个字符串日志,我想用尽可能少的样板代码反序列化为一个对象。
当前解决方案不使用 attrs:
我可以attrs
用来将此日志反序列化为不可变对象吗?
python-3.x - pytype 使用 attrs 默认工厂装饰器引发错误
mypy
没有错误,但pytype
无法处理此代码并上升attribute-error
。我该如何解决?
代码:
日志:
版本:
PS我想不# pytype: disable=attribute-error
排队@x.default
python-3.x - 无法导入scrapy
我试图在 python 3.7 中导入 scrapy,得到了这个错误:
我也使用“pip install --upgrade attrs”更新了 attrs,但仍然保持不变。
python-3.x - 如何获得不可变对象的修改副本?
如何获得不可变对象的修改副本?
即some_magical_method
在这个剪断中怎么可能看起来像?
背景:我想为我的配置使用不可变对象。但我也想在处理非常相似的配置时避免代码重复,例如单元测试
python-attrs - Python Attr:使用其他属性的转换器?
Python attrs 中有没有办法让转换器引用自身的属性?现在我正在使用__attr_post_init__
,但感觉像是一种罪过。
python - 在 attrs 中更改冻结类的属性
我希望找到一种在初始化为特定值时更改 url 的方法,而不会丢失类的冻结属性,这是否可能?
python-attrs - attrs 转换器的装饰器
是否有使用 attrs 转换器的装饰器?
有 and 的装饰器validator
,default
但我看不到converter
.
可能吗?
我更喜欢将函数作为类内的“方法”,而不是类外的全局函数。装饰器允许:)
验证器的示例代码段。
我想使用转换器做类似的事情。将一些输入字节修剪为上限的示例。
python - 为什么在创建类实例后不能为属性赋值?
我刚刚发现attrs
,它实际上对我即将进行的项目非常有用。在玩耍时,我发现了一些我无法向自己解释的行为。
我有这段代码:
使用foobar.defaults.update(firstname='Thomas')
也可以foobar = FooBar(defaults={'firstname':'Thomas'})
,但不应该直接分配吗?还是我使用的方式on_setattr
不对validator
?
当我尝试使用 int 设置属性时,即foobar.defaults = 1
正确引发了 ValueError。
任何提示表示赞赏。问候,托马斯