因此,我在静态土地上花了大量时间后开始使用Python.我已经看到一些项目使得"接口"实际上只是没有任何实现的类.之前,我嘲笑这个想法,忽略那些项目的那一部分.但现在,我开始热衷于这个想法了.
我们很清楚,Python中的界面看起来像这样:
class ISomething(object):
def some_method():
pass
def some_other_method(some_argument):
pass
Run Code Online (Sandbox Code Playgroud)
请注意,您没有将self传递给任何方法,因此要求重写该方法以进行调用.我认为这是一种很好的文档和完整性测试形式.
那么每个人对这个想法的看法是什么?我做过的所有C#编程都被洗脑了,还是这个好主意?
单元测试析构函数有什么好方法吗?就像说我有一个这样的类(人为的)例子:
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是否真的被删除了,特别是因为在调用析构函数时对象超出了范围.
我一直认为如果一个文件在没有关闭的情况下被打开就会泄漏,但我只是验证了如果我输入以下代码行,该文件将关闭:
>>> f = open('somefile.txt')
>>> del f
Run Code Online (Sandbox Code Playgroud)
出于纯粹的好奇心,这是如何工作的?我注意到该文件不包含__del __方法.
我的应用程序一直运行到Timeout Expired SqlExceptions.问题是这个查询只需要运行相当长的时间.我无法弄清楚这个异常发生在哪里.这是在数据库服务器上创建的超时还是在我的程序中发生?或者如果两者兼而有之,我该如何确定它是哪一个?
最后,如何延长超时时间?
如果我想创建一个自定义组合键来运行命令,是否有为此保留的键盘快捷键?我总是发现很难决定要覆盖哪个快捷方式,因为我不确定哪些命令不应该覆盖,以及我将来可能安装的命令插件将尝试设置.
我刚刚在Go FAQ中遇到过这个问题,它让我想起了一段时间以来一直困扰着我的事情.不幸的是,我真的没有看到答案的答案.
似乎几乎所有非C类语言都将类型放在变量名后面,如下所示:
var : int
Run Code Online (Sandbox Code Playgroud)
出于纯粹的好奇心,这是为什么?选择其中一个是否有优势?
我正在写一个元类,不小心这样做:
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)
这两个元类之间究竟有什么区别?更具体地说,导致第一个不能正常工作的原因(某些类没有被元类调用)?
我们正在开发一个支持AMQP排队的应用程序.我们的一些客户正在使用Websphere MQ.我只是想知道这两个协议在功能方面的可互换性.我正在使用celery,只要我能编写Websphere MQ后端,就可以让我抽象出低级的东西.我想弄清楚的是这将是多么艰难的挑战.
Websphere MQ是否提供AMQP功能的超集?是否有任何一个"功能"可能会让我的生活变得困难?
我已经创建了一个C扩展,我想在我的Python包中启用(使用setuptools),只有传入命令行选项.最简单的方法是什么?
我似乎无法找到任何直截了当的方式来解决这个问题.
python ×5
amqp ×1
c# ×1
c++ ×1
celery ×1
coding-style ×1
cppunit ×1
cython ×1
del ×1
destructor ×1
elisp ×1
emacs ×1
file ×1
grammar ×1
ibm-mq ×1
interface ×1
linq-to-sql ×1
messaging ×1
metaclass ×1
new-operator ×1
rabbitmq ×1
setuptools ×1
sql-server ×1
sqlexception ×1
types ×1
unit-testing ×1