有没有一个可以重载赋值运算符的魔术方法,比如__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)
可能吗?这是疯了吗?我应该上药吗?
任何人都可以解释弱引用的用法吗?
该文件没有精确地解释它,它只是说,GC可以摧毁通过随时弱引用链接到对象.那么一个物体可以随时消失的重点是什么?如果我需要在消失后立即使用它怎么办?
能用一些好的例子来解释一下吗?
谢谢
关于检测字典的更改并在字典更改时调用函数,我在SO上看到了一些类似的问题,例如:
这些示例使用Observer模式或重载的变体__setitem__,但所有这些示例都不检测嵌套字典值的更改.
例如,如果我有:
my_dict = {'a': {'b': 1}}
my_dict['a']['b'] = 2
Run Code Online (Sandbox Code Playgroud)
不会检测到2元素的赋值['a']['b'].
我想知道是否有一种优雅的方法来检测更改不仅是字典的基本元素,还有嵌套字典的所有子元素.
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)