小编fri*_*tzo的帖子

在 Pydantic 中定义递归模型?

如何定义递归 Pydantic 模型?

这是我的意思的一个例子:

from typing import List
from pydantic import BaseModel

class Task(BaseModel):
    name: str
    subtasks: List[Task] = []
Run Code Online (Sandbox Code Playgroud)

但是当我运行时出现以下错误:

NameError                                 Traceback (most recent call last)
<ipython-input-1-c6dca1d390fe> in <module>
      2 from pydantic import BaseModel
      3
----> 4 class Task(BaseModel):
      5     name: str
      6     subtasks: List[Task] = []

<ipython-input-1-c6dca1d390fe> in Task()
      4 class Task(BaseModel):
      5     name: str
----> 6     subtasks: List[Task] = []
      7

NameError: name 'Task' is not defined
Run Code Online (Sandbox Code Playgroud)

我查看了文档但找不到任何内容。例如,在“递归模型”页面上,但它似乎是关于嵌套子类型而BaseModel不是关于递归类型定义。

感谢您的帮助!

python oop types jsonschema pydantic

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

如何在C++中混合原子和非原子操作?

std :: atomic类型允许对变量进行原子访问,但我有时会喜欢非原子访问,例如当访问受到互斥锁保护时.考虑一个允许多线程访问(通过插入)和单线程矢量化访问(通过运算符| =)的位域类:

class Bitfield
{
    const size_t size_, word_count_;
    std::atomic<size_t> * words_;
    std::mutex mutex_;

public:

    Bitfield (size_t size) :
        size_(size),
        word_count_((size + 8 * sizeof(size_t) - 1) / (8 * sizeof(size_t)))
    {
        // make sure words are 32-byte aligned
        posix_memalign(&words_, 32, word_count_ * sizeof(size_t));
        for (int i = 0; i < word_count_; ++i) {
            new(words_ + i) std::atomic<size_t>(0);
        }
    }
    ~Bitfield () { free(words_); }

private:
    void insert_one (size_t pos)
    {
        size_t mask = size_t(1) << (pos % …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading atomic vectorization c++11

8
推荐指数
1
解决办法
2483
查看次数