小编Jas*_*ker的帖子

Python中的"接口":Yea还是Nay?

因此,我在静态土地上花了大量时间后开始使用Python.我已经看到一些项目使得"接口"实际上只是没有任何实现的类.之前,我嘲笑这个想法,忽略那些项目的那一部分.但现在,我开始热衷于这个想法了.

我们很清楚,Python中的界面看起来像这样:

class ISomething(object):
    def some_method():
        pass
    def some_other_method(some_argument):
        pass
Run Code Online (Sandbox Code Playgroud)

请注意,您没有将self传递给任何方法,因此要求重写该方法以进行调用.我认为这是一种很好的文档和完整性测试形式.

那么每个人对这个想法的看法是什么?我做过的所有C#编程都被洗脑了,还是这个好主意?

python documentation coding-style interface

16
推荐指数
6
解决办法
3230
查看次数

itertools是线程安全的吗?

例如,如果我使用创建迭代器chain,我可以在多个线程上调用它吗?请注意,依赖于GIL的线程安全性是可以接受的,但不是优选的.

(请注意,这与此问题略有不同,后者处理生成器,而不是用C编写的迭代器).

python thread-safety python-itertools

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

单元测试析构函数?

单元测试析构函数有什么好方法吗?就像说我有一个这样的类(人为的)例子:

class X
{
private:
    int *x;

public:
    X()
    {
         x = new int;
    }

    ~X()
    {
         delete x;
    }

    int *getX() {return x;}
    const int *getX() const {return x;}
};
Run Code Online (Sandbox Code Playgroud)

是否有任何好的方法对它进行单元测试以确保x被删除而不会使用#ifdef TEST或破坏封装来混乱我的hpp文件?我看到的主要问题是很难判断x是否真的被删除了,特别是因为在调用析构函数时对象超出了范围.

c++ unit-testing destructor cppunit

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

python如何关闭已经gc'ed的文件?

我一直认为如果一个文件在没有关闭的情况下被打开就会泄漏,但我只是验证了如果我输入以下代码行,该文件将关闭:

>>> f = open('somefile.txt')
>>> del f
Run Code Online (Sandbox Code Playgroud)

出于纯粹的好奇心,这是如何工作的?我注意到该文件不包含__del __方法.

python garbage-collection file del

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

是什么原因导致LINQ to SQL中的Timeout过期SqlExceptions?

我的应用程序一直运行到Timeout Expired SqlExceptions.问题是这个查询只需要运行相当长的时间.我无法弄清楚这个异常发生在哪里.这是在数据库服务器上创建的超时还是在我的程序中发生?或者如果两者兼而有之,我该如何确定它是哪一个?

最后,如何延长超时时间?

c# sql-server sql-server-2005 sqlexception linq-to-sql

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

是否为自定义命令保留了任何emacs组合键?

如果我想创建一个自定义组合键来运行命令,是否有为此保留的键盘快捷键?我总是发现很难决定要覆盖哪个快捷方式,因为我不确定哪些命令不应该覆盖,以及我将来可能安装的命令插件将尝试设置.

emacs elisp

15
推荐指数
2
解决办法
2379
查看次数

为什么很多编程语言都将*类型放在变量名之后?

我刚刚在Go FAQ中遇到过这个问题,它让我想起了一段时间以来一直困扰着我的事情.不幸的是,我真的没有看到答案的答案.

似乎几乎所有非C类语言都将类型放在变量名后面,如下所示:

var : int
Run Code Online (Sandbox Code Playgroud)

出于纯粹的好奇心,这是为什么?选择其中一个是否有优势?

grammar programming-languages language-design

15
推荐指数
6
解决办法
3719
查看次数

python中类型和类型.__ new__有什么区别?

我正在写一个元类,不小心这样做:

class MetaCls(type):
    def __new__(cls, name, bases, dict):
        return type(name, bases, dict)
Run Code Online (Sandbox Code Playgroud)

......而不是像这样:

class MetaCls(type):
    def __new__(cls, name, bases, dict):
        return type.__new__(cls, name, bases, dict)
Run Code Online (Sandbox Code Playgroud)

这两个元类之间究竟有什么区别?更具体地说,导致第一个不能正常工作的原因(某些类没有被元类调用)?

python types metaclass new-operator

15
推荐指数
5
解决办法
5763
查看次数

AMQP与Websphere MQ

我们正在开发一个支持AMQP排队的应用程序.我们的一些客户正在使用Websphere MQ.我只是想知道这两个协议在功能方面的可互换性.我正在使用celery,只要我能编写Websphere MQ后端,就可以让我抽象出低级的东西.我想弄清楚的是这将是多么艰难的挑战.

Websphere MQ是否提供AMQP功能的超集?是否有任何一个"功能"可能会让我的生活变得困难?

messaging amqp rabbitmq celery ibm-mq

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

为python包制作可选C扩展的最简单方法是什么?

我已经创建了一个C扩展,我想在我的Python包中启用(使用setuptools),只有传入命令行选项.最简单的方法是什么?

我似乎无法找到任何直截了当的方式来解决这个问题.

python setuptools cython python-c-extension

14
推荐指数
2
解决办法
1960
查看次数