在以下代码段中,has_bar
行为主体和DoStuff
方法的行为有所不同:
在主要方法中,a_bar == false
和b_bar == true
。
执行此命令时,输出为2x“ Foo”。为什么?
#include <iostream>
struct A
{
void Foo() { std::cout << "Foo" << std::endl; }
};
struct B : public A
{
void Bar() { std::cout << "Bar" << std::endl; }
};
template<typename, typename = void>
struct has_bar : std::false_type
{ };
template<typename T>
struct has_bar<T, std::void_t<decltype(T::Bar)>> : std::true_type
{ };
template<typename T>
void DoStuff(T t)
{
if constexpr (has_bar<T>::value)
{
t.Bar();
}
else
{ …
Run Code Online (Sandbox Code Playgroud) 我想知道是否可以在运行时访问变量的类型注释,就像使用方法和函数的__annotations__
条目一样inspect.getmembers()
。
> a:Optional[str]=None
> type(a)
<class 'NoneType'>
> a:str=None
> type(a)
<class 'NoneType'>
Run Code Online (Sandbox Code Playgroud)
谢谢。
我最近创建了一个仅允许发送消息和读取消息历史记录的机器人。在我自己的服务器上,bot 似乎完美无缺,但是某个用户尝试在他自己的服务器上使用该 bot 并discord.errors.Forbidden: 403 FORBIDDEN (error code: 50013): Missing Permissions
弹出错误。
await message.channel.send(file=discord.File(io.BytesIO(meme), filename="meme.png"))
Run Code Online (Sandbox Code Playgroud)
上面的行是导致错误的原因。我想我需要“附加文件”权限,但出于某种原因,它在我的测试服务器上没有它就可以工作。
完整追溯:
Traceback (most recent call last):
File "/home/nemplayer/.local/lib/python3.7/site-packages/discord/client.py", line 270, in _run_event
await coro(*args, **kwargs)
File "bot/bot.py", line 78, in on_message
await message.channel.send(file=discord.File(io.BytesIO(meme), filename="meme.png"))
File "/home/nemplayer/.local/lib/python3.7/site-packages/discord/abc.py", line 806, in send
content=content, tts=tts, embed=embed, nonce=nonce)
File "/home/nemplayer/.local/lib/python3.7/site-packages/discord/http.py", line 218, in request
raise Forbidden(r, data)
discord.errors.Forbidden: 403 FORBIDDEN (error code: 50013): Missing Permissions
Run Code Online (Sandbox Code Playgroud) 我在我的php文件中包含了如下的youtube播放器:但是播放器没有显示全屏按钮.切换到Flash播放器(无论是通过更改/嵌入到/ v或通过禁用&html5 = 1的URL)都可以.我究竟做错了什么?
例如:http://jonnyrimkus.square7.ch/stuff/youtube_html5_fullscreen.php
<script>
var tag = document.createElement(\'script\');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName(\'script\')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
function onYouTubeIframeAPIReady() {
player = new YT.Player(\'player\', {
playerVars: {
\'allowfullscreen\': \'true\',
\'allowscriptaccess\': \'always\'
},
events: {
\'onReady\': onYouTubePlayerReady,
\'onStateChange\': playerStateChange,
\'onError\': playerStateError
}
});
}
</script>
<iframe id="player" width="425" height="356" border="0" frameborder="0" src="http://www.youtube.com/embed/36XdO9Iv9ew?enablejsapi=1&playerapiid=lastfmplayer&autoplay=1&html5=1&fs=1&origin=http://jonnyrimkus.square7.ch"></iframe>
Run Code Online (Sandbox Code Playgroud) 我正在使用 QML 开发 python 桌面应用程序。
我的 QML 文件中有这个:
SplitView {
anchors.fill: parent
orientation: Qt.Horizontal
Rectangle {
color: "#272822"
id: cameraRectangle
width: window.width / 2
Item {
//more stuff
}
Item {
Rectangle {
anchors.top: cameraRectangle.bottom
}
}
}
Rectangle {
//Rectangle info.
}
}
Run Code Online (Sandbox Code Playgroud)
我收到错误“QML 矩形:无法锚定到不是父项或同级项的项目。” 在我正在做anchors.top的线上:cameraRectangle.bottom。我会假设外部矩形是内部矩形的父级?
我在网上搜索过,如下所示: http: //doc.qt.io/qt-5/qtquick-visualcanvas-visualparent.html,他们似乎没有做任何不同的事情?
难道是我使用的QtQuick版本的问题?
进口情况如下:
import QtQuick 2.6
import QtQuick.Controls 2.0
import QtQuick.Controls 1.4
import QtQuick.Controls.Material 2.0
import QtQuick.Window 2.0
Run Code Online (Sandbox Code Playgroud)
我感谢您的帮助。
我在C++中有以下代码
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> a;
int n;
for(int i=0;i<3;i++){
cin>>n;
a.insert(n);
}
cout << *a.end();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么总是打印"3"而不是集合中最大的元素?更换cout << *a.end();
用cout << *--a.end();
工作正常.
我有大数据集,并且有大量价值超出平均值。例如,
A B
1 'H' 10
2 'E' 10000
3 'L' 12
4 'L' 8
5 'O' 11
Run Code Online (Sandbox Code Playgroud)
我想将像元设置B2
为0,然后尝试了
df['B'] = df['B'].replace([df['B'] > 15], 0)
Run Code Online (Sandbox Code Playgroud)
但是没有任何运气。如何使我的数据框像这样,
A B
1 'H' 10
2 'E' 0
3 'L' 12
4 'L' 8
5 'O' 11
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在使用API,其中的信息将是这样的:
"id": "17",
"address": "Av. Nossa Senhora de Copacabana",
"addressComplement": "A",
"number": "945",
"cityId": "2",
"cityName": "Rio de Janeiro",
"state": "Rio de Janeiro",
"uf": "RJ",
"neighborhood": "Copacabana",
"properties": {},
"telephones": [],
"geolocation": {
"lat": -22.97625,
"lng": -43.19002
},
Run Code Online (Sandbox Code Playgroud)
但是,在某些记录中,它不包含该geolocation
字段,因此我必须检查是否geolocation
存在于我的代码中.
我试图用hasattr
这个技巧,但我认为我做错了.
这是我的代码的一部分:
if hasattr(i, 'geolocation'):
address_lat = i['geolocation']['lat']
address_lng = i['geolocation']['lng']
else:
address_lat = 0.0
address_lng = 0.0
Run Code Online (Sandbox Code Playgroud)
我的想法是,它将检查索引的位置是否i
存在内部的东西geolocation
.如果有东西,则返回true并进入条件,否则var将接收0.0
.
那么,我做错了什么?这是正确的使用方式hasattr
吗?
如标题所示,以下代码为什么表现得如此奇怪?
a = {
0: 0
}
b = []
for i in a:
del a[i]
a[i + 1] = 0
b.append(i)
print(b)
Run Code Online (Sandbox Code Playgroud)
在Python3.6中它会打印[0, 1, 2, 3, 4]
,而在Python3.5中它会打印[0, 1, 2, 3, 4, 5, 6, 7]
。为什么?
python ×5
python-3.x ×3
c++ ×2
qml ×2
qt ×2
qtquick2 ×2
annotations ×1
c++17 ×1
dataframe ×1
discord.py ×1
embed ×1
html5 ×1
html5-video ×1
iterator ×1
pandas ×1
qt-quick ×1
qt5 ×1
set ×1
type-traits ×1
youtube ×1