小编Unc*_*eiv的帖子

为什么 PyRun_String 不评估 bool 文字?

我需要从 C++ 评估 Python 表达式。这段代码似乎有效:

PyObject * dict = PyDict_New();
PyObject * val = PyRun_String(expression, Py_eval_input, dict, 0);
Py_DECREF(dict);
Run Code Online (Sandbox Code Playgroud)

不幸的是,如果表达式是“假”的“真”(即 val 为 0 并且 PyErr_Occurred() 返回真),它会失败。我究竟做错了什么?他们不应该分别评估 Py_True 和 Py_False 吗?

python boolean cpython

5
推荐指数
1
解决办法
1286
查看次数

如果基类的数据成员被覆盖为派生类中的属性,如何调用它?

这个问题类似于另一个问题,区别在于基类中的数据成员没有被描述符协议包装.

换句话说,如果我使用派生类中的属性覆盖其名称,我该如何访问基类的成员?

class Base(object):
    def __init__(self):
        self.foo = 5

class Derived(Base):
    def __init__(self):
        Base.__init__(self)

    @property
    def foo(self):
        return 1 + self.foo # doesn't work of course!

    @foo.setter
    def foo(self, f):
        self._foo = f

bar = Base()
print bar.foo

foobar = Derived()
print foobar.foo
Run Code Online (Sandbox Code Playgroud)

请注意,我还需要定义一个setter,否则在基类中分配self.foo不起作用.

总而言之,描述符协议似乎与继承没有很好的交互...

python inheritance overloading descriptor

5
推荐指数
2
解决办法
7594
查看次数

关于运营商的预定义含义的问题

在"The C++ programming language"中,在265页,作者发表以下声明:

由于历史事故,运算符=(赋值),&(地址)和(序列;§6.2.2)在应用于类对象时具有预定义的含义.一般用户可以通过将其设为私有来使这些预定义含义无法访问:

然后给出以下示例:

class X {
private:
 void operator=(const X&);
 void operator&();
 void operator,(const X&);
 // ...
};

void f(X a, X b)
{
   a = b;  // error: operator= private
   &a;     // error: operator& private
   a,b;    // error: operator, private
}
Run Code Online (Sandbox Code Playgroud)

我不太明白这些"错误"评论是指什么?这是否意味着我不应该这样定义一个函数f,或者说所有的=,&,运营商应按照默认方式来使用,没有必要重新定义它们呢?

c++

5
推荐指数
2
解决办法
617
查看次数

如何检测Vim是否在限制模式下运行?

......或者在任何模式下.

我只想在这种情况下阻止某些扩展加载,例如:

if ! currentmode('restricted')
     Bundle('some-extension')
endif
Run Code Online (Sandbox Code Playgroud)

vim

5
推荐指数
1
解决办法
831
查看次数

将颜色bmp转换为灰度bmp?

我正在尝试将彩色BMP文件转换为灰度BMP.输入bmp是24位,我在输出端产生相同的24位bmp,这次只是灰度级.

我正在使用的代码是

for(int x = 0; x < max; x++)
{
    int lum;
    lum = (r[x]*0.30) + (g[x]*0.59) + (b[x]*0.11);
    r[x] = lum;
    g[x] = lum;
    b[x] = lum;
}
Run Code Online (Sandbox Code Playgroud)

r,g,b数组是RGB颜色分量,我有他们在char *r,*g,*b.

由于某些原因,我没有得到干净的输出.我正在附加我对这个问题的输出,它的斑驳并且在地方包含白色和黑色区域.那么我在这里做错了什么?

  1. 是因为计算lum时数据丢失还是将int存储为char有什么问题?
  2. 灰度bmp可以不是24位吗?或者我在转换后存储rgb值的方式有问题吗?

任何有关这方面的帮助都会非常有用.谢谢.

c c++ bmp

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

如何强制Qt在我的模型上调用`data()`?

我有一个QtTreeView和一个Foo派生自QAbstractItemModel附加的类.

Foo::dataQt::BackgroundRole根据一些内部数据的状态设置树的每个元素.

当我收到更新我的内部数据的信号时,我想相应地更新每个项目的背景,但我似乎无法可靠地让Qt调用我的Foo::data方法.

我试过打电话update()repaint()(在视图上)无济于事.调用reset()工作,但我失去了树的所有状态(例如扩展元素等).调用setData()每个元素也有效,但代码有点尴尬,因为我必须显式重建显示的数据树,这是不好的.

我怎么能强迫Qt打电话data()给我的模特?

qt4

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

标签 统计

c++ ×2

python ×2

bmp ×1

boolean ×1

c ×1

cpython ×1

descriptor ×1

inheritance ×1

overloading ×1

qt4 ×1

vim ×1