相关疑难解决方法(0)

Python:绑定一个未绑定的方法?

在Python中,有没有办法绑定未绑定的方法而不调用它?

我正在编写一个wxPython程序,对于某个类,我认为将所有按钮的数据组合在一起作为类级别的元组列表是很好的,如下所示:

class MyWidget(wx.Window):
    buttons = [("OK", OnOK),
               ("Cancel", OnCancel)]

    # ...

    def Setup(self):
        for text, handler in MyWidget.buttons:

            # This following line is the problem line.
            b = wx.Button(parent, label=text).Bind(wx.EVT_BUTTON, handler)
Run Code Online (Sandbox Code Playgroud)

问题是,由于所有的值handler都是未绑定的方法,我的程序在一个壮观的火焰中爆炸,我哭泣.

我在网上寻找解决方案似乎应该是一个相对简单,可解决的问题.不幸的是我找不到任何东西.现在,我正在functools.partial尝试解决这个问题,但有没有人知道是否有一种干净,健康,Pythonic的方式将未绑定的方法绑定到一个实例并继续传递它而不调用它?

python methods bind class

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

Python getattr等价于字典?

在Python中,最简洁的说法是" dict['foo']如果它存在就给我,如果不存在,给我这个其他价值bar"?如果我使用的是对象而不是字典,我会使用getattr:

getattr(obj, 'foo', bar)
Run Code Online (Sandbox Code Playgroud)

但是如果我尝试使用字典(这是我发现不幸来自JavaScript/CoffeeScript的区别),这会引发一个关键错误.同样,在JavaScript/CoffeeScript中,我只是写

dict['foo'] || bar
Run Code Online (Sandbox Code Playgroud)

但是,这又产生了一个KeyError.该怎么办?东西简洁,拜托了!

python

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

标签 统计

python ×2

bind ×1

class ×1

methods ×1