我对UnionPython 静态类型中的用法有点困惑。
class A():
foo: int = 10
class B():
bar: str = 'hello'
def get_object() -> Union[A, B]:
return B()
var = get_object()
var.bar
Run Code Online (Sandbox Code Playgroud)
上面的片段返回 error: Item "A" of "Union[A, B]" has no attribute "bar"
文档状态
Intersection 和 Union 之间的交互很复杂,但如果您了解正则集合的交集和 union 之间的交互,应该不会感到惊讶
这让我相信可以像使用or类型一样使用类型变量,而类型检查器不会抛出错误Union[A, B]AB。这不正确吗?
如果是这样,我怎样才能实现模仿这一点的功能?(即 from 的值get_object可以用作类型AorB)
我遇到的问题是,当我更改对象的属性时,更改不是"保存".更容易向您展示正在发生的事情.
我正在学习c++并决定建立一个小型国际象棋应用程序.每个Piece都是一个单独的对象.
它们存储在std::vector这样的中
std::vector<Piece> pieces;
Run Code Online (Sandbox Code Playgroud)
他们是这样初始化的
for (int i = 0; i < 2; i++)
{
Piece p;
p.Init(i*2+1, 1, renderer, SQUARE_SIZE, "king");
pieces.push_back(p);
}
Run Code Online (Sandbox Code Playgroud)
当我点击鼠标时我想选择所有部分(暂时)
for (int i = 0; i < pieces.size(); i++)
{
Piece p = pieces[i];
p.Select();
}
Run Code Online (Sandbox Code Playgroud)
问题是,在Select()调用函数时,到渲染selected属性的时候是false.奇怪的是,这不会发生在未被包含在内的作品vector中k.
在你问之前我的代码中没有任何地方设置selected为false:)(除了构造函数:P)
此外,如果你想要downvoting,请先给我发表评论然后我会尝试解决它的问题!
这是整个文件.(不确定这是否是插入它们的正确方法)
Piece.h
#include <iostream>
#include <SDL2/SDL.h>
#include <SDL2/SDl_image.h>
#include <array> …Run Code Online (Sandbox Code Playgroud)