小编Tre*_*edJ的帖子

我的type_trait在模板/非模板代码中的不同行为

在以下代码段中,has_bar行为主体和DoStuff方法的行为有所不同:

在主要方法中,a_bar == falseb_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)

c++ type-traits c++17

4
推荐指数
1
解决办法
122
查看次数

在运行时访问变量的 Python 3 类型注释

我想知道是否可以在运行时访问变量的类型注释,就像使用方法和函数的__annotations__条目一样inspect.getmembers()

> a:Optional[str]=None
> type(a)
<class 'NoneType'>

> a:str=None
> type(a)
<class 'NoneType'>
Run Code Online (Sandbox Code Playgroud)

谢谢。

python annotations python-3.x

4
推荐指数
1
解决办法
2146
查看次数

discord.errors.Forbidden:403 FORBIDDEN(错误代码:50013):缺少权限

我最近创建了一个仅允许发送消息和读取消息历史记录的机器人。在我自己的服务器上,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)

python python-3.x discord.py

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

嵌入youtube html5播放器显示没有全屏按钮

我在我的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)

embed youtube html5 html5-video

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

无法锚定到不是父级或同级 QML QtQuick 的项目

我正在使用 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)

我感谢您的帮助。

qt qml qtquick2

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

最后一个元素的C++迭代器

我在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();工作正常.

c++ iterator set

3
推荐指数
4
解决办法
6595
查看次数

替换熊猫数据框中的特定值范围

我有大数据集,并且有大量价值超出平均值。例如,

    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)

谢谢!

python dataframe pandas

3
推荐指数
2
解决办法
6923
查看次数

其中定义了 'index' 属性,因为 Repeater 用于实例化项目数组,每个项目都可以访问索引

我猜索引是一个附加属性,但它在哪里定义以及为什么访问索引不是 as ListView.isCurrentItem

从官方文档来看, Repeater 的delegate属性的描述

委托会暴露给只读索引属性,该属性指示中继器内委托的索引。

我更困惑了。为什么委托会暴露给某个属性?通过什么操作会发生这种情况?

qt qml qt-quick qt5 qtquick2

3
推荐指数
1
解决办法
4837
查看次数

如何知道python中的字典中是否存在某些内容

我正在使用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吗?

python

3
推荐指数
2
解决办法
227
查看次数

为什么以下代码的行为如此奇怪?Python3.5和Python3.6

如标题所示,以下代码为什么表现得如此奇怪?

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 language-lawyer python-3.x

3
推荐指数
1
解决办法
103
查看次数