我需要从 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 吗?
这个问题类似于另一个问题,区别在于基类中的数据成员没有被描述符协议包装.
换句话说,如果我使用派生类中的属性覆盖其名称,我该如何访问基类的成员?
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不起作用.
总而言之,描述符协议似乎与继承没有很好的交互...
在"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,或者说所有的=,&和,运营商应按照默认方式来使用,没有必要重新定义它们呢?
......或者在任何模式下.
我只想在这种情况下阻止某些扩展加载,例如:
if ! currentmode('restricted')
Bundle('some-extension')
endif
Run Code Online (Sandbox Code Playgroud) 我正在尝试将彩色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.
由于某些原因,我没有得到干净的输出.我正在附加我对这个问题的输出,它的斑驳并且在地方包含白色和黑色区域.那么我在这里做错了什么?
任何有关这方面的帮助都会非常有用.谢谢.
我有一个QtTreeView和一个Foo派生自QAbstractItemModel附加的类.
在Foo::data我Qt::BackgroundRole根据一些内部数据的状态设置树的每个元素.
当我收到更新我的内部数据的信号时,我想相应地更新每个项目的背景,但我似乎无法可靠地让Qt调用我的Foo::data方法.
我试过打电话update()和repaint()(在视图上)无济于事.调用reset()工作,但我失去了树的所有状态(例如扩展元素等).调用setData()每个元素也有效,但代码有点尴尬,因为我必须显式重建显示的数据树,这是不好的.
我怎么能强迫Qt打电话data()给我的模特?
c++ ×2
python ×2
bmp ×1
boolean ×1
c ×1
cpython ×1
descriptor ×1
inheritance ×1
overloading ×1
qt4 ×1
vim ×1