问题标签 [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 - attrs 如何欺骗调试器进入自动生成的代码?
我正在浏览一些使用attrs模块的代码。因此,在调试单步执行某些代码时,我最终会得到不作为实际文件存在但自动生成的源。
这个问题是关于使用什么 python 技术来实现这种行为的。用于示例的实际库或示例本身只是展示概念的具体内容。
例子
安装库
表现出行为(test.py
)的代码:
执行该代码并单步执行会RawSerialPort
导致调试器在自动生成的源中发现自己:
注意def __init__
定义,实际源文件中不存在这样的定义,而是由attrs
.
我的问题是这里有什么 python 机制来实现这种甚至欺骗调试器的行为?
python - 如何用字符串表示反序列化枚举?
我想创建一个类,它有一个枚举作为属性。这个枚举应该有一个字符串表示,当转储使用 enum 属性作为 JSON 字符串的类的实例时,它显示为人类可读的值。在下面的最小工作示例中,我以三种不同的方式创建了三个枚举。
反序列化后,每个属性都向我们表明它来自一个枚举,但具有字符串表示的枚举除外。它只是一个字符串。
如果不可能实现这样的结构,我想知道为什么。
要求
如果你想测试它,你必须安装jsons
并attrs
使用
最小的工作示例
在这里,您会看到一个最小的工作示例。
order
和order_deserialised
变量的结构:
如您所见,order_deserialised
蔬菜显示为字符串而不是枚举。
python - 使用 attrs 创建的类的索引类型无效
我目前正在重写一个程序,我将两个较旧的脚本合并为一个。我重用了大部分代码,也mypy
用于新版本中的类型检查。
总是出现的是一个 mypy 错误,它在尝试从我创建的类中访问属性时具有无效的索引类型attrs
。
在这两种情况下,我都会收到以下消息:
Invalid index type "str" for "Dict[_KT, _VT]"; expected type "_KT"
我可以跳过的唯一方法是# type: ingore
在行尾手动添加。要么我没有正确使用课程,要么我监督了一些事情。
那里有人对我有提示吗?提前谢谢。
python-attrs - 在 attrs 自动生成的 init 方法签名中禁用前导下划线删除
attr
从生成的__init__
方法的属性名称中去除前导下划线。有没有办法为特定属性覆盖它,而不是完全禁用类的自动生成初始化方法?
我想使用attr
类来表示 MongoDB 文档,它在 Python 中是带有_id
记录唯一 ID 的键的字典。我希望能够拥有一个仅比 .from_db(cls, doc)
多一点的类方法return cls(**doc)
,但是存在_id
原因“TypeError:init () got an unexpected keyword argument '_id'”。现在,我通过声明 `_id: attr.ib(init=False, default=None) 来解决它,并具有:
但这似乎真的很糟糕。有没有更好的办法?
python - 在 attrs 类中为 init 参数添加类型提示
有没有办法将 init arg 的类型提示与属性的类型提示分开?
请让我通过例子更好地解释自己。如果在普通班上,我会做类似的事情:
attrs 中的等价物是什么?也许这个?
我认为不是因为当我尝试以下操作时,我没有得到匹配的结果:
有没有办法将这些类型提示的 attrs 信号发送到它创建的 init 方法中?
还尝试在文档中搜索解决方案,但也许我错过了。
python - 如何在启动时为 attr.s 设置默认值?
使用 python attrs 库并尝试在 Settings 对象中设置目录路径。当从 shell 本身设置环境变量时,这非常有用。但是,如果没有从 shell 设置 TEST_TMPDIR 并且我尝试在 python 代码本身中设置该值,则默认值初始化为 None。
下面的代码示例默认为无。
只有在 shell 级别设置环境变量时,代码当前才有效。所以export TEST_TMPDIR="/tmp/"
在终端中做然后阅读 Settings() 工作。
尝试在其中读取 os.environ["TEST_TMPDIR"]__attrs_post_init__
确实返回了 python 代码设置的值。
任何有关为什么在启动时未设置默认值的链接都会有所帮助。
python - 具有随机属性值的 Python attrs?
我attrs
用来创建A
具有属性的类,surprise
然后每次访问它时都应该返回一个不同的随机值(可能从可能的值列表中选择)。
我们如何添加一个钩子来访问surprise
类的属性?这个钩子可以让我们在每次访问surprise
属性时生成一个新的字符串值。
谢谢!
期望:
python - 使用 python attrs 库将 kwargs 传递给基类
我正在将attrs python 库用于继承自非 attrs 基类的子类。我想通过 kwargs 向孩子公开所有父参数,但无法弄清楚如何使用 attrs 进行处理。
基本示例:
我对父类没有很大的自由裁量权,但在将其设置为 attrs 时也看到了围绕默认值的挑战。有没有办法避免在 Child 上指定所有 Parent 参数?如果我不使用 attrs 我可以做一些类似的事情**kwargs_Parent
并初始化super(Child,self).__init__(a=2*x, **kwargs)
python - 您可以使用 namedtuples/dataclass/attrs 创建一个灵活大小的类还是必须使用传统类?
如果有一个看起来像这样的 json 数据集。
并且需要将其转换为一组对象,其中可以使用相同的类来定义对象。
但是属性可以通过点符号访问,就像这样。
使用传统课程的方法是这样的。
有没有办法对命名元组或数据类或属性做基本相同的事情,适用于不同大小的数据,并具有这些数据类型的所有良好的不变性、repr 等功能。
django - 如何解析字段必须是字段名称作为键的映射(dict / OrderedDict)或在石墨烯中返回此类映射的函数?
我正在尝试使用 attrs 结构和解构在 django 中使用石墨烯创建一个人模式,以便使用 JSONB 将我的数据输入到数据库中。
到目前为止,这是我创建的:
模型.py:
架构.py:
和我的 person.py (目前没有给我任何问题):
这是我现在遇到的错误
在整个构建过程中,我遇到了很多此类错误,并且根据我对 Django 和 Graphene 的介绍知识,我确信我主要只是在代码上添加了创可贴,因此您可以建议进行任何重构来实现这一点更坚固将不胜感激。