小编Pet*_*ood的帖子

像Smalltalk这样的Python开发环境

我喜欢用Python语言编程来解决系统管理环境中的日常问题,我很高兴,但最近我正在学习Pharo Smalltalk,因为我对这种语言在对象编程中的不同方法非常着迷.
我非常喜欢Smalltalk关于将环境保存在一个文件中的虚拟机和系统映像概念的想法.
它在Python中是否存在类似的东西?

python development-environment smalltalk virtual-machine pharo

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

标记被覆盖的功能

是否存在命令\deprecated,但标记被覆盖的函数?

Java有一个@override已覆盖的函数的注释.我想在C++中做同样的事情,这样我就能看到我覆盖的超类函数.最好的情况是,文档页面还应显示所有类成员函数,这些函数是继承的,但未使用超类函数的超链接显式覆盖.

我知道有一种方法可以从超类方法中复制文档.但我不想复制整个文档.我只是想知道,一个函数是继承的.该行为应与已弃用的选项类似,以使用条形标记这些旧函数.

c++ overriding doxygen

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

调用基类的重载方法

我有这个代码:

#include <iostream>
#include <string>

using namespace std;

class A {
    public: void Print(int i) {cout<<i;}
};

class B : public A {
    public: void Print(string s) {cout<<s;}
};

int main() {
    B bInstance;
    bInstance.Print(1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误:

error: invalid conversion from 'int' to 'const char*' [-fpermissive]
Run Code Online (Sandbox Code Playgroud)

这意味着它试图在不考虑继承过载的情况下调用B的Print.但是,A的打印应该可以由B实例调用.事实上,如果我将呼叫改为

bInstance.A::Print(1);
Run Code Online (Sandbox Code Playgroud)

然后它编译没有任何错误,但我想避免每次都要编写类范围操作符.有没有办法告诉编译器我试图调用基类的函数重载?

c++ methods inheritance overloading class

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

os.open vs open,使用什么

我是新来的蟒蛇,看文档,看到有打开文件访问的至少两种方式os.openopen.os.open和之间有什么区别open

我应该什么时候使用os.open

我应该什么时候使用open

python file python-3.x

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

使用Qt进行多处理适用于Windows,但不适用于Linux

我正在使用Qt开发GUI应用程序.

当我尝试QApplication使用multiprocessing以下方法创建另一个时出错:

RuntimeError:QApplication实例已存在

我有一个主窗口,其中包含一个用于生成新进程的按钮,以便我可以创建一个新的GUI实例.基本上是这样的:

from PySide.QtCore import *
from PySide.QtGui import *
import multiprocessing
import sys


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        btn = QPushButton('run new instance')
        btn.clicked.connect(self.create_daemon)
        self.setCentralWidget(btn)

    def create_daemon(self):
        p = multiprocessing.Process(target=new_window)
        p.start()

def new_window():
    app=QApplication(sys.argv)
    ex = MainWindow()
    ex.show()
    sys.exit(app.exec_())

if __name__=="__main__":
    app=QApplication(sys.argv)
    ex = MainWindow()
    ex.show()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

它适用于Windows但RuntimeError在Linux中提供.这是因为Windows和Linux之间的多处理机制存在差异吗?我怎么能在Linux中实现同样的东西?

python linux pyqt python-multiprocessing

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

如何使用C++复制目录

我使用c ++制作了备份程序,但它使用System()命令批量复制文件.

我正在寻找一种复制整个目录的方法(这不需要创建任何目录,只需复制它们).或者,复制目录中的所有内容.

例如,我想要复制C:\Users\ to E:\Backup\ Or C:\Users\* to E:\Backup\.

如果可能的话,你可以在答案中加入一个例子.

非常感谢!

c++ windows directory copy file

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

构造函数调用层次结构

我在类型层次结构中调用构造函数的规则时遇到了棘手的问题.这是我做的:

class A{
protected:
    int _i;
public:
    A(){i = 0;}
    A(int i) : _i(i){}
    virtual ~A(){}
    virtual void print(){std::cout<<i<<std::endl;}
};

class B : virtual public A{
protected:
    int _j;
public:
    B() : A(){_j = 0;}
    B(int i, int j) : A(i), _j(j){}
    virtual ~B(){}
    virtual void print(){std::cout<<i<<", "<<j<<std::endl;}
};

class C : virtual public B{
protected:
    int _k;
public:
    C() : B(){_k = 0;}
    C(int i, int j, int k} : B(i,j), _k(k){}
    virtual ~C(){}
    virtual void print(){std::cout<<i<<", "<<j<<", "<<k<<std::endl;} …
Run Code Online (Sandbox Code Playgroud)

c++ constructor call hierarchy

6
推荐指数
3
解决办法
2114
查看次数

转义字符\ t对空间的行为不同

为什么只有放空间才能看到输出.

print "I love you %s" % "\tI'm tabbled in."
print "I love you %s" % " \tI'm tabbled in."
Run Code Online (Sandbox Code Playgroud)

产量

I love you  I'm tabbled in.
I love you      I'm tabbled in.
Run Code Online (Sandbox Code Playgroud)

python

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

创建具有两个值的字典时错过的值

我有两个列表如下.

count = (1, 0, 0, 2, 0, 0, 1, 1, 1, 2)
bins = [[2.0, 3.0], [3.0, 4.0], [4.0, 5.0], [5.0, 6.0], [6.0, 7.0], [7.0, 8.0], [8.0, 9.0], [9.0, 10.0], [10.0, 11.0], [11.0, 12.0], [12.0]]
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下创建字典;

dictionary = dict(itertools.izip(count, bins))
Run Code Online (Sandbox Code Playgroud)

它给了我 {"0": [7.0, 8.0], "1": [10.0, 11.0], "2": [11.0, 12.0]}

它只提供唯一的键值,但我需要得到所有的对,如下所示.

{"0": [3.0, 4.0],"0": [4.0, 5.0],"0": [6.0, 7.0],"0": [7.0, 8.0], "1": [2.0, 3.0],"1": [8.0, 9.0], "1": [9.0, 10.0], "1": [10.0, 11.0], "2": [6.0, 7.0] ,"2": [11.0, 12.0]}
Run Code Online (Sandbox Code Playgroud)

或者上面词典中的键和值的交换是可以接受的.(因为键应该是唯一的)我该怎么做?

python dictionary python-itertools

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

为什么我的好奇重复模板模式(CRTP)不能引用派生类的typedef?

当使用奇怪的重复模板模式时,只有当我尝试从基类引用它们时,我才能引用属于派生类的typedef ; gcc抱怨道no type named 'myType' in class Derived<...>.这似乎与使用typedef,模板和奇怪的重复关系的情况不一致.

考虑:

/* crtp.cpp */

#include <iostream>
using namespace std;

// case 1. simple.

class Base {
public:
    typedef int a_t;

    a_t foo;
};

class Derived : public Base {
    a_t bar;
};

// case 2. template.

template<typename T>
class tBase {
public:
    typedef T b_t;
    T foo;
};

template <typename T>
class tDerived : public tBase<T> {
    typename tBase<T>::b_t bar;
};

// case 3. curiously …
Run Code Online (Sandbox Code Playgroud)

c++ gcc templates typedef crtp

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