当使用多重继承而不是使用组合或其他替代方案更容易解决问题时,您能提供一些真实示例吗?
什么时候应该使用多重继承?
为什么有些语言支持多重继承(C++,Python)而有些语言不支持(Java,Ruby)?我的意思是 - 基于什么因素,编程语言的创建者决定是否包括对MI的支持.
我用pypy创建了一个virtualenv并尝试安装scipy,但安装结束时出现以下错误:
distutils.errors.DistutilsError:安装脚本退出并显示错误:命令"cc -O2 -fPIC -Wimplicit -O2 -fPIC -Wimplicit -O2 -fPIC -Wimplicit -DHAVE_NPY_CONFIG_H = 1 -D_FILE_OFFSET_BITS = 64 -D_LARGEFILE_SOURCE = 1 -D_LARGEFILE64_SOURCE = 1 - DNO_ATLAS_INFO = 1 -DHAVE_CBLAS -Ibuild/src.linux-x86_64-3.2/numpy/core/src/private -Inumpy/core/include -Ibuild/src.linux-x86_64-3.2/numpy/core/include/numpy -Inumpy/core/src/private -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/home/luke/Programowanie/Python/connect4/venv-pypy/include -Ibuild/src.linux-x86_64-3.2/numpy/core/src/private -Ibuild/src.linux-x86_64-3.2/numpy/core/src/private -Ibuild/src.linux-x86_64-3.2/numpy/core/src/private -c numpy/core/src/multiarray/scalarapi.c -o build/temp.linux-x86_64-3.2/numpy/core/src/multiarray/scalarapi.o"以退出状态1失败
有一个特定的numpy版本适合pypy,但我发现scipy唯一的东西是旧的捐款呼吁.从那时起有什么变化吗?
我想创建一个带有嵌入式python解释器和基本调试功能的应用程序.现在我在API中搜索可用于逐步运行代码的函数,并获取正在(或即将执行)的当前代码行的编号.
在进行跟踪和分析时,官方Python文档对我来说似乎有点不足.例如,没有关于返回值含义的信息Py_tracefunc
.
到目前为止,我已经汇总了以下内容:
#include <Python.h>
static int lineCounter = 0;
int trace(PyObject *obj, PyFrameObject *frame, int what, PyObject *arg)
{
if(what == PyTrace_LINE)
{
lineCounter += 1;
printf("line %d\n", lineCounter);
}
return 0;
}
int main(int argc, char *argv[])
{
wchar_t *program = Py_DecodeLocale(argv[0], NULL);
if (program == NULL) {
fprintf(stderr, "Fatal error: cannot decode argv[0]\n");
exit(1);
}
Py_SetProgramName(program); /* optional but recommended */
Py_Initialize();
PyEval_SetTrace(trace, NULL);
char *code = …
Run Code Online (Sandbox Code Playgroud) 基于PyBrain的教程,我设法将以下代码拼凑在一起:
#!/usr/bin/env python2
# coding: utf-8
from pybrain.structure import FeedForwardNetwork, LinearLayer, SigmoidLayer, FullConnection
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer
n = FeedForwardNetwork()
inLayer = LinearLayer(2)
hiddenLayer = SigmoidLayer(3)
outLayer = LinearLayer(1)
n.addInputModule(inLayer)
n.addModule(hiddenLayer)
n.addOutputModule(outLayer)
in_to_hidden = FullConnection(inLayer, hiddenLayer)
hidden_to_out = FullConnection(hiddenLayer, outLayer)
n.addConnection(in_to_hidden)
n.addConnection(hidden_to_out)
n.sortModules()
ds = SupervisedDataSet(2, 1)
ds.addSample((0, 0), (0,))
ds.addSample((0, 1), (1,))
ds.addSample((1, 0), (1,))
ds.addSample((1, 1), (0,))
trainer = BackpropTrainer(n, ds)
# trainer.train()
trainer.trainUntilConvergence()
print n.activate([0, 0])[0]
print n.activate([0, 1])[0]
print n.activate([1, …
Run Code Online (Sandbox Code Playgroud) 在我的程序中,我需要存储与许多(我们谈论数十万、数百万)游戏板状态相关的数据。为此,我使用字典。
class BoardState(object):
def __init__(self, ...):
# ...
self.board = [ [ None ] * self.cols for _ in xrange(self.rows) ]
def __hash__(self):
board_tuple = tuple([ tuple(row) for row in self.board ])
return hash(board_tuple)
# ...
Run Code Online (Sandbox Code Playgroud)
self.board
在我的主要用例中,是一个 2D 列表,有 6 行和 7 列。
一开始我dict
用BoardState
对象索引了。但由于除了将来的查找之外,我不会将BoardState
存储的对象dict
用于其他目的,因此我注意到我可以通过索引来节省内存hash(board_state)
(此版本使用的内存减少了 4 倍)。
BoardState
两个不同的对象(内部有不同的board
s)在 ing 后产生相同值的可能性有多大hash
?
为了澄清一点,这就是我存储和检索值的方式dict
:
board_state = BoardState(...)
my_values[hash(board_state)] = { ... }
...
other_val_with_board_state = source_function() …
Run Code Online (Sandbox Code Playgroud) 我在文本文件中有这样的数据:
CLASS col2 col3 ...
1 ... ... ...
1 ... ... ...
2 ... ... ...
2 ... ... ...
2 ... ... ...
Run Code Online (Sandbox Code Playgroud)
我使用以下代码加载它们:
data = readdlm("file.txt")[2:end, :] # without header line
Run Code Online (Sandbox Code Playgroud)
现在我只想从第 1 类中获取包含行的数组。
(如果有帮助,可以使用其他一些函数加载数据。)
I need to parse a QML tree and get id
s of all QML objects along the way which have it. I noticed that id
s don't behave like normal properties (see the example below) – value returned from obj->property
call is an invalid QVariant
.
我的问题是 - 有没有办法检索 object's id
,即使是一些hacky(但可复制)的方式?
简化示例:
主.qml:
import QtQuick 2.9
import QtQuick.Window 2.2
Window {
visible: true
Item {
id: howToGetThis
objectName: "item"
}
}
Run Code Online (Sandbox Code Playgroud)
主.cpp:
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QTimer>
#include …
Run Code Online (Sandbox Code Playgroud) 最近我和我的朋友们对不同的编程语言进行了基准测试 当我最近学习Haskell时,我想表明一个函数式语言的表现几乎和C一样好,代码更简单.但下面粘贴的代码,用GHC的-O3选项编译,在我的机器上执行大约1.6秒.Python和Ruby中的等效脚本执行得更快(这是一个简单的for循环).
import System.IO
saveLine fh x = hPutStrLn fh $ show x ++ "\t" ++ show (x^2)
main = do
fh <- openFile "haskell.txt" WriteMode
mapM (saveLine fh) [1..999999]
hClose fh
Run Code Online (Sandbox Code Playgroud)
你可以在这里查看其他语言的代码(我只写了Python和Ruby中的代码).
问题是 - 如何让它运行得更快?
python ×3
python-2.7 ×2
architecture ×1
c ×1
c++ ×1
file-io ×1
filter ×1
hash ×1
haskell ×1
inheritance ×1
julia ×1
math ×1
numpy ×1
performance ×1
pybrain ×1
pypy ×1
python-3.x ×1
python-c-api ×1
qml ×1
qt ×1
scipy ×1