小编Maa*_*enB的帖子

初始化 TypedDict 并稍后填充键和值

我有一个字典,其中键和值的类型是固定的。我想定义 a 中的类型TypedDict如下:

class MyTable(TypedDict):
    caption: List[str]
    header: List[str]
    table: pd.DataFrame
    epilogue: List[str]
Run Code Online (Sandbox Code Playgroud)

我有返回一个MyTable. 我想首先定义一个空(Typed)dict并填充键和值。

def returnsMyTable():
    result = {}
    result['caption'] = ['caption line 1','caption line 2']
    result['header'] = ['header line 1','header line 2']
    result['table'] = pd.DataFrame()
    result['epilogue'] = ['epilogue line 1','epilogue line 2']
    return result
Run Code Online (Sandbox Code Playgroud)

这里 MyPy 抱怨需要结果的类型注释。我尝试了这个:

result: MyTable = {}
Run Code Online (Sandbox Code Playgroud)

但随后 MyPy 抱怨密钥丢失了。同样,如果我定义键但将值设置为None,它会抱怨值的类型不正确。

是否可以先将 a 初始化TypedDict为空 Dict,然后再填充键和值?文档似乎表明是这样

我想我可以首先将值定义为变量,然后MyTable再组装它们,但我正在处理要添加类型提示的遗留代码。所以我想尽量减少工作量。

python mypy typeddict

13
推荐指数
1
解决办法
2万
查看次数

与静态库链接与在 C++ 中使用目标文件时的不同行为

我正在处理一些以我不理解的方式运行的遗留 C++ 代码。我正在使用 Microsoft 编译器,但我也尝试过使用 g++(在 Linux 上) - 相同的行为。

我有下面列出的 4 个文件。从本质上讲,它是一个记录成员列表的注册表。如果我编译所有文件并将目标文件链接到一个程序中,它会显示正确的行为:registry.memberRegistered为真:

>cl shell.cpp registry.cpp member.cpp
>shell.exe
1
Run Code Online (Sandbox Code Playgroud)

所以不知何故,member.cpp 中的代码被执行了(我不太明白,但还好)。

但是,我想要的是从 registry.cpp 和 member.cpp 构建一个静态库,并将其链接到从 shell.cpp 构建的可执行文件。但是当我这样做时,member.cpp 中的代码不会被执行并且registry.memberRegistered是假的:

>cl registry.cpp member.cpp  /c
>lib registry.obj member.obj -OUT:registry.lib
>cl shell.cpp registry.lib
>shell.exe
0
Run Code Online (Sandbox Code Playgroud)

我的问题:为什么它以第一种方式工作,而不是第二种方式,有没有办法(例如编译器/链接器选项)使其与第二种方式一起工作?


注册表.h:

class Registry {
public:

    static Registry& get_registry();
    bool memberRegistered;

private:
    Registry() {
        memberRegistered = false; 
    }
};
Run Code Online (Sandbox Code Playgroud)

注册表.cpp:

#include "registry.h"
Registry& Registry::get_registry() {
    static Registry registry;
    return registry;
}
Run Code Online (Sandbox Code Playgroud)

成员.cpp: …

c++ static-libraries

5
推荐指数
2
解决办法
1319
查看次数

标签 统计

c++ ×1

mypy ×1

python ×1

static-libraries ×1

typeddict ×1