当我在 Pycharm 中使用带有边界的 TypeVar 时,没有与 Typevar 的上限相关的提示。例子:
from typing import TypeVar
class TestClass:
def test_class_method(self):
print("test")
T = TypeVar('T', bound=TestClass)
def test_method(test_class: T):
test_class.test_class_method()
test_method(TestClass())
Run Code Online (Sandbox Code Playgroud)
在这里,我希望test_class method当我在test_class. 但是什么都没有。当我突出显示 时test_class,有一个工具提示正确说明:推断类型:TypeVar('T', TestClass)。我这边有错误,还是自动完成问题?
使用向量向量,我可以这样做:
std::vector<std::vector<int>> vov;
vov.emplace_back(std::initializer_list<int>{0, 0});
Run Code Online (Sandbox Code Playgroud)
但是, std::array 的向量等效失败:
std::vector<std::array<int, 2>> voa;
voa.emplace_back(std::initializer_list<int>{0,0});
Run Code Online (Sandbox Code Playgroud)
在向量中放置数组的正确方法是什么?
编辑:
是的,您可以从初始化列表创建 std::array :
std::array<int, 2> a = {0, 0}
Run Code Online (Sandbox Code Playgroud)
工作正常。
错误:
error C2664: 'std::array<int,2>::array(const std::array<int,2> &)': cannot convert argument 1 from 'std::initializer_list<int>' to 'const std::array<int,2> &'
Run Code Online (Sandbox Code Playgroud) autocomplete ×1
c++ ×1
emplace ×1
pycharm ×1
python ×1
stdarray ×1
stdvector ×1
type-hinting ×1