我有一个类装饰器,它向装饰类添加了一些函数和字段。
@mydecorator
@dataclass
class A:
a: str = ""
Run Code Online (Sandbox Code Playgroud)
添加(通过setattr())是一个.save()函数和一组数据类字段的信息作为单独的字典。
我希望 VScode 和 mypy 能够正确识别这一点,以便当我使用时:
a=A()
a.save()
Run Code Online (Sandbox Code Playgroud)
或者a.my_fields_dict这两个被正确识别。
有什么办法可以做到这一点吗?也许A在运行时修改类类型注释?
dynamic type-hinting python-3.x python-decorators python-typing
我正在研究解析器。它从源文本中获取值。它事先并不知道它将获得多少个或哪些值,即变量的名称、它们的计数等可能会有很大差异。源代码的每个部分仅提供一些值,而不是完整列表。这些值当前存储在自定义类的列表中,类似于 KeyValuePair,但从头开始编写。
从源检索到的内容示例:
Section 1:
KeyA = ValA1
KeyB = ValB1
KeyD = ValD1
Section 2:
KeyC = ValC2
Section 3:
KeyB = ValB3
KeyD = ValD3
Run Code Online (Sandbox Code Playgroud)
ETC。
现在,我想以 DataGrid 的形式向用户显示此信息:
| KeyA | KeyB | KeyC | KeyD |
+-------+-------+-------+-------+
| ValA1 | ValB1 | | ValD1 |
| | | ValC2 | |
| | ValB3 | | ValD3 |
Run Code Online (Sandbox Code Playgroud)
目前,我正在迭代每个部分中找到的所有值,检查列是否存在 - 如果不存在 - 创建新列。如果列存在 - 向相应的行/列添加值。然后将生成的 DataTable 附加到 DataGrid,如下所示:
dg.ItemSource=dt.AsDataView();
Run Code Online (Sandbox Code Playgroud)
这完全符合预期,但是太慢了。
如果有任何关于如何加快速度的想法,我将不胜感激。初始存储,或转换为 DataTable,或绑定数据的其他方式,以实现向用户提供相同的呈现。
C#、WPF、.NET 框架 4.5
更新: …