【发布时间】:2012-04-20 22:32:33
【问题描述】:
以下代码使用 Tkinter 模块创建一个简单的 gui。
import Tkinter
root = Tkinter.Tk()
myContainer1 = Tkinter.Frame(root)
myContainer1.pack()
button1 = Tkinter.Button(myContainer1)
button1["text"]= "Hello, World!"
button1["background"] = "green"
button1.pack()
root.mainloop()
现在看下面的代码:
button1["text"]= "Hello, World!"
此语法看起来与将值分配给字典键相同。 您如何为用户定义的对象定义这种行为的可能性? 您能否举个例子,例如:
class Example(object):
def __init__(self, length = 1, width= 2):
self.length = length
self.width = width
编辑 1(响应 kindall 和 jsbueno):
我正在尝试通过以下方式调用分配给e["alpha"] 的值42:
print e["alpha"]
我添加到你的代码中:
def __getitem__(self, key, value):
if key in self.validkeys:
getattr(self, key, value)
else:
raise KeyError
但我仍然得到'Example' is not subscriptable TypeError。
编辑 2
def __getitem__(self, key):
if key in self.validkeys:
return getattr(self, key)
else:
raise KeyError
【问题讨论】:
标签: python class dictionary