小编Pon*_*dle的帖子

覆盖自定义类的bool()

所有我想要的是bool(myInstance)返回False(并且myInstance在条件中评估为False,如if /或/和.我知道如何覆盖>,<,=)

我试过这个:

class test:
    def __bool__(self):
        return False

myInst = test()
print bool(myInst) #prints "True"
print myInst.__bool__() #prints "False"
Run Code Online (Sandbox Code Playgroud)

有什么建议?

(我使用的是Python 2.6)

python casting boolean class python-2.x

50
推荐指数
4
解决办法
2万
查看次数

你如何找到提高编程技巧的时间?

我是一名在印度工作的Java/J2ee程序员.我非常热衷于编程,我不断努力通过阅读博客,解决Project euler问题,学习新技术,开发小应用程序等来磨练我的编程技巧.但我发现很难管理自己的时间.每天在办公室工作12小时让我感到压力,并与家人共度周末.所以我几乎不需要每周5-6小时来实际工作我感兴趣的东西,这将有助于我提高.

你如何管理时间,以便你有时间提高现有的地位?

编辑:12小时包括1小时的旅行和1小时的休息(午餐/咖啡).实际上,我每天在办公室工作10个小时,这是我的组织要求的.

-Snehal

time-management

17
推荐指数
3
解决办法
2921
查看次数

已知XPath部分属性

我知道文档中属性的部分值,但不是整个事物.有没有我可以用来表示任何价值的角色?例如,输入的标签值是"A.选择1".我知道它说"选择1",但不知道它是否会在"选择1"之前说"A"或"B".以下是相关的HTML.输入和标签还有其他属性,但每次呈现页面时它们都不相同,所以我不能将它们用作引用:

<tr>
<td><input type="checkbox" /><label>A. Choice 1</label></td>
</tr><tr>
    <td><input type="checkbox" /><label>B. Choice 2</label></td>
</tr><tr>
<td><input type="checkbox" /><label>C. Choice 3</label></td>
</tr><tr>
     <td><input type="checkbox" /><label>D. Choice 4</label></td>
</tr>
Run Code Online (Sandbox Code Playgroud)

这是我用来选择标签旁边的输入的值为"选择1" 的XPath表达式,除了A在HTML前面的前面:

//td[label="Choice 1"]/input
Run Code Online (Sandbox Code Playgroud)

我不知道HTML中的A是A还是A,等等.但是我确实知道正确的输入总是会有旁边的Choice 1文本.如果标签包含选项 1,如何选择它,而不是等于选择1?

xpath string-matching

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

检测循环进口

我正在使用一个包含大约30个独特模块的项目.它设计得不太好,因此在向项目添加一些新功能时创建循环导入是很常见的.

当然,当我添加循环导入时,我不知道它.有时很明显,当我得到一个像AttributeError: 'module' object has no attribute 'attribute'我明确定义的错误时,我已经进行了循环导入'attribute'.但其他时候,代码不会因为它的使用方式而抛出异常.

所以,对我的问题:

是否有可能以编程方式检测循环导入的发生时间和位置?

到目前为止,我能想到的唯一解决方案是拥有一个importTracking包含dict importingModules,一个函数的模块,该函数importInProgress(file)会递增importingModules[file],如果大于1则抛出错误,并且函数importComplete(file)会递减importingModules[file].所有其他模块看起来像:

import importTracking
importTracking.importInProgress(__file__)
#module code goes here.
importTracking.importComplete(__file__)
Run Code Online (Sandbox Code Playgroud)

但这看起来真的很讨厌,必须有更好的方法去做,对吗?

python circular-dependency

17
推荐指数
1
解决办法
6670
查看次数

跨平台本机打开/保存文件对话框

我正在为我的程序编写一个UI,使用opengl和SDL结合使用Lua和C++

我现在需要的是一些库,它允许我调用一个函数,向用户显示用于打开/保存文件的文件选择对话框.但是如果操作系统为这样的对话提供了本机功能,那么我想使用该对话框(例如Window的GetOpenFileName).

我需要支持的唯一平台是Windows和Linux,但我希望能够仍然使用我已编写的大部分SDL和openGL代码.

有哪些选择?

c++ user-interface dialog cross-platform native

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

while循环中的小代码冗余(感觉不干净)

所以,在Python中(虽然我认为它可以应用于许多语言),我经常发现自己有这样的事情:

the_input = raw_input("what to print?\n")
while the_input != "quit":
    print the_input
    the_input = raw_input("what to print?\n")
Run Code Online (Sandbox Code Playgroud)

也许我太挑剔了,但我不喜欢这条线有多the_input = raw_input("what to print?\n")重复.它降低了可维护性和组织性.但是我没有看到任何避免重复代码的变通方法而不会进一步恶化问题.在某些语言中,我可以这样写:

while ((the_input=raw_input("what to print?\n")) != "quit") {
    print the_input
}
Run Code Online (Sandbox Code Playgroud)

这绝对不是 Pythonic,Python甚至不允许在循环条件AFAIK中进行赋值.

这个有效的代码修复了冗余,

while 1:
    the_input = raw_input("what to print?\n")
    if the_input == "quit":
        break
    print the_input
Run Code Online (Sandbox Code Playgroud)

但是也感觉不对.将while 1意味着这个循环将永远运行下去; 我正在使用一个循环,但给它一个假的条件并将真正的条件放入其中.

我太挑剔了吗?有一个更好的方法吗?也许有一些我不知道的为此设计的语言结构?

python maintainability redundancy organization

11
推荐指数
1
解决办法
475
查看次数

以编程方式优化表达式(通过删除冗余计算)

我有一个非常大的等式,我需要用它来解决给定的变量.所以我使用了一个能够根据给定变量重写方程的在线工具.它给了我一些巨大的700字符方程式.我测试了它,它确实有效.

我可以在等式中看到一些非常明显的冗余,它重新计算一个可以保存为临时变量的值.我可以通过整个方程并自己优化它,但我可能不得不用更多的方程来做这个,所以我想自动化这个过程.

什么是有助于优化数学冗余的好工具?
(这只是个人项目,所以我真的更喜欢免费的东西)

对于所有我认识的人都会问这个问题真的是必要的:这是性能关键代码,根据我的经验,AS3编译器不会对它自己做这些优化.删除冗余也会使代码更具可读性.

math optimization redundancy function actionscript-3

9
推荐指数
3
解决办法
487
查看次数

C++ 11安全地加入一个线程而不使用try/catch块

根据这里这里的文档,C++ 11线程的join方法将抛出一个std::system_errorif joinable() == false.因此,等待线程完成执行的自然方式是:

if (thread2.joinable()) thread2.join();
Run Code Online (Sandbox Code Playgroud)

但是,这有可能抛出std :: system_error.考虑线程1调用thread2.joinable(),返回true,表明thread2仍在运行.然后调度程序暂停thread1并将上下文切换到线程2.线程2完成,然后线程1重新开始.线程1调用thread2.join(),但是thread2已经完成,结果抛出了std :: system_error.

一个可能的解决方案是将整个事物包装在try块中:

try {
    thread2.join();
catch (std::system_error &e) {}
Run Code Online (Sandbox Code Playgroud)

但是当一个合法的std :: system_error被抛出时,可能表明线程无法加入,程序继续进行,就好像一切都很好而花花公子.除了使用像这样的try/catch块之外,还有一种正确的方法来加入一个线程吗?

c++ multithreading exception-handling exception c++11

9
推荐指数
1
解决办法
3604
查看次数

class __init __(不是实例__init__)

这是我想要解决的一个非常简单的例子:

class Test(object):
    some_dict = {Test: True}
Run Code Online (Sandbox Code Playgroud)

问题是我仍然无法在定义时引用Test

通常,我只是这样做:

class Test(object):
    some_dict = {}
    def __init__(self):
        if self.__class__.some_dict == {}:
            self.__class__.some_dict = {Test: True}
Run Code Online (Sandbox Code Playgroud)

但我从来没有创建过这个类的实例.这真的只是一个容器,以便容纳一组相关的功能和数据(我有几个这些类的,我绕过它们的引用,所以这必要的测试是它自己的类)

所以我的问题是,在定义时,我怎么能引用Test,或者在定义类之后是否有类似于__init__get的内容?如果可能的话,我想self.some_dict = {Test: True}留在类定义中.到目前为止,这是我知道如何做到这一点的唯一方法:

class Test(object):
    @classmethod
    def class_init(cls):
        cls.some_dict = {Test: True}
Test.class_init()
Run Code Online (Sandbox Code Playgroud)

python initialization class self-reference

8
推荐指数
1
解决办法
545
查看次数

从命令行启动Python IDLE以编辑脚本

我尝试了这个命令的许多变种:idle.py -e filepath,但它只是像正常一样开始IDLE,没有打开任何额外的窗口进行编辑,也没有抛出任何错误.

那么我怎样才能通过命令行(或者甚至是Python模块)来打开IDLE,file> open> filepath呢?

python windows python-idle

7
推荐指数
3
解决办法
4万
查看次数