小编che*_*sun的帖子

如何输入提示函数,通过Python中的类装饰器添加到类中

我有一个类装饰器,它向装饰类添加了一些函数和字段。

@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

11
推荐指数
1
解决办法
1341
查看次数

将键/值对列表转换为数据表

我正在研究解析器。它从源文本中获取值。它事先并不知道它将获得多少个或哪些值,即变量的名称、它们的计数等可能会有很大差异。源代码的每个部分仅提供一些值,而不是完整列表。这些值当前存储在自定义类的列表中,类似于 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

更新: …

c# wpf datagrid .net-4.5

5
推荐指数
1
解决办法
7552
查看次数