小编PPr*_*eus的帖子

在 Python 中重载按位运算符以处理布尔值

我有一个类,我希望在某些情况下能够对其进行按位运算。

class Measurement(object):
    def __init__(self, value = None, category = None, measure = None):
        self.value = value
        self.category = category
        self.measure = measure    

    def __nonzero__(self):
        return self.value.__nonzero__()

    def __or__(self, other):
        return self.__nonzero__() | other

a = False
b = Measurement(True)
Run Code Online (Sandbox Code Playgroud)

此时c = b | a可以工作,但c = a | b会出现类型错误。我怎样才能让它双向工作?

另外,有没有更优雅的方法来做到这一点;例如,我曾希望通过定义__nonzero__,我可能会得到正确的行为,但事实并非如此。

我正在使用Python 2.7。

python python-2.7

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

将 Excel 工作表添加到工作簿末尾

我正在尝试将 excel 工作表添加到工作簿的末尾,保留第一个工作表作为摘要。

import win32com.client

Excel = win32com.client.DispatchEx('Excel.Application')
Book = Excel.Workbooks.Add()

Excel.Visible = True

Book.Worksheets(3).Delete()
Book.Worksheets(2).Delete()

Sheet = Book.Worksheets(1)

Sheet.Name = "Summary"

Book.Worksheets.Add(After=Sheet)

Sheet = Book.Worksheets(2)

Sheet.Name = "Data1"
Run Code Online (Sandbox Code Playgroud)

此代码将新工作表添加到左侧,尽管使用After=Sheet,并且当我修改名为“Data1”的工作表时,它会覆盖名为“Summary”的工作表。

这类似于这个问题:

在 Excel 中将工作表添加到工作簿的末尾(正常方法不起作用?)

但给定的解决方案对我不起作用。

python excel win32com python-2.7

3
推荐指数
1
解决办法
6998
查看次数

cProfile 没有方法 runcall

我正在尝试使用 cProfile 来分析一些 python 代码。我相信我需要使用cProfile.runcall(),而不是cProfile.run(),因为我想要运行的方法是形式self.funct()而不是简单的funct()

当我尝试使用此处cProfile.runcall详细说明时,出现以下错误:

AttributeError: 'module' object has no attribute 'runcall'

是否从 cProfile 中删除了 runcall 方法?如果是这样,是否有使用表单的替代方法cProfile.runcall(self.funct,*args)

最小(非)工作示例:

import cProfile

def funct(a):
    print a

cProfile.runcall(funct,"Hello")
Run Code Online (Sandbox Code Playgroud)

python cprofile python-2.7

3
推荐指数
1
解决办法
897
查看次数

在Python 2.7中,通过super(self .__ class__,self)调用Super Constructor不是更好吗?

要在Python 2.7中调用父类的构造函数,我看到的标准代码是:

super(Child, self).__init__(self, val),

Child儿童班在哪里.(在Python 3.x中,这是简化的,但我现在必须使用2.7.)我的问题是,在python 2.7中使用super的"规范"不是更好:

super(self.__class__, self).__init__(self, val)

我测试了这个,它似乎工作.有没有理由不使用这种方法?

python inheritance super python-2.7 python-3.x

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

信号和插槽连接的星号是什么?

在Python Qt中,我将一个QListWidget信号连接到一个插槽,如下所示:

QtCore.QObject.connect(self.myList, QtCore.SIGNAL("itemClicked(QListWidgetItem *)"), self.ListEventHandler)
Run Code Online (Sandbox Code Playgroud)

我的问题是:尾随星号的作用是QListWidgetItem *什么?

python qt pyqt signals-slots

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

如何在Python中动态调整2D列表的大小

我在python中创建了一大堆元素,我将打印到Excel电子表格中.顺序和最终维度在某种程度上是可以预测的,但对它们进行硬编码本质上是脆弱的.我想找到一种动态调整数组大小的方法,如果它不够大的话.

元素添加的顺序可能不是顺序的,因此追加不能直接起作用.我需要能够在2D数组中分配任何元素,并调整数组大小以处理它,如下所示:

data = magic_array()
data[3][5] = 35
Run Code Online (Sandbox Code Playgroud)

是否存在允许此行为的内置功能?如果没有,你能推荐一个好方法来实现吗?

python python-2.7

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

为什么Python解释器在以下行显示语法错误?

我一直用一些代码帮助一个新的Python用户,他问我为什么python解释器在实际错误之后会在行上显示一些语法错误.请考虑以下代码:

x = [1, 2, 3
print x
Run Code Online (Sandbox Code Playgroud)

将显示该行的语法错误print x,尽管错误确实在前一行.

这可能是非常令人困惑(并且浪费时间)第一次遇到它,这是一个非常常见的问题(在您最喜欢的搜索引擎上搜索"python语法错误"),似乎并不难纠正......为什么还没有修好?目前的方法有一些好处吗?

python

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

PY Qt 从 QMainWindow 打开 QDialog

我正在使用使用 QT Designer 生成的 python 代码。我想通过 MainWindow 上的按钮打开一个新对话。当我使用以下代码时,对话窗口一创建就消失了。我认为这是因为 QDialog 对象在该方法命中 return 语句时被销毁。调用这种对话的正确方法是什么?

def OpenDialogue(self):

    DialogueWindow = QtGui.QDialog()
    my_dialogue = MyDialogue.Ui_Dialog()
    my_dialogue.setupUi(DialogueWindow)
    DialogueWindow.show()

    return
Run Code Online (Sandbox Code Playgroud)

例如,我应该在定义 MainWindow 的同一位置实例化 DialogueWindow 并将其传递给此方法吗?

MainWindow 构造函数如下:

class Ui_MainWindow(QtGui.QMainWindow, object):

    def setupUi(self, MainWindow):
        [code]
Run Code Online (Sandbox Code Playgroud)

它的实例化如下:

app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = GUI.Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)

python pyqt pyqt4 qt-designer python-2.7

0
推荐指数
1
解决办法
3456
查看次数