相关疑难解决方法(0)

是否有可能重载Python赋值?

有没有一个可以重载赋值运算符的魔术方法,比如__assign__(self, new_value)

我想禁止重新绑定一个实例:

class Protect():
  def __assign__(self, value):
    raise Exception("This is an ex-parrot")

var = Protect()  # once assigned...
var = 1          # this should raise Exception()
Run Code Online (Sandbox Code Playgroud)

可能吗?这是疯了吗?我应该上药吗?

python methods class magic-methods assignment-operator

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

何时在Python中使用弱引用?

任何人都可以解释弱引用的用法吗?

文件没有精确地解释它,它只是说,GC可以摧毁通过随时弱引用链接到对象.那么一个物体可以随时消失的重点是什么?如果我需要在消失后立即使用它怎么办?

能用一些好的例子来解释一下吗?

谢谢

python weak-references

35
推荐指数
2
解决办法
6063
查看次数

停在变量变化的行

我试图追踪变量何时更新.我有一个观察者,但无论如何要设置,以便在值更新时暂停执行?

pycharm

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

使用Python检测嵌套字典的更改

关于检测字典的更改并在字典更改时调用函数,我在SO上看到了一些类似的问题,例如:

这些示例使用Observer模式或重载的变体__setitem__,但所有这些示例都不检测嵌套字典值的更改.

例如,如果我有:

my_dict = {'a': {'b': 1}}
my_dict['a']['b'] = 2
Run Code Online (Sandbox Code Playgroud)

不会检测到2元素的赋值['a']['b'].

我想知道是否有一种优雅的方法来检测更改不仅是字典的基本元素,还有嵌套字典的所有子元素.

python dictionary

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

当全局变量改变它的值时如何调用函数?

change_label当全局变量a改变其值时如何调用函数?我试图change_variable模拟变量的实际变化(单击按钮时变量会发生变化)。

from tkinter import *

a = 3

class Application(Frame):

    def __init__(self, master):
        Frame.__init__(self, master)
        self.master = master
        self.button = Button(self.master, text='Change Variable', command=self.change_variable)
        self.button.grid(row=0)
        self.label = Label(self.master, text='Test')
        self.label.grid(row=1)

    def change_label(self):
        self.label.config(bg='Red', fg='Yellow')

    def change_variable(self):
        global a
        a = 1

def main():
    root = Tk()
    Application(root)
    root.mainloop()

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

python tkinter

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