1
以下代码使用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
但我仍然得到'示例'不是可自定义的TypeError。
编辑2
def __getitem__(self, key):
if key in self.validkeys:
return getattr(self, key)
else:
raise KeyError
谢谢!我试图通过输入'print e [“alpha”]'来调用值'42'。我通过定义'__getitem__'来定义它。但是我仍然得到一个TypeError。你能检查我编辑过的原始回复吗? – Bentley4 2012-04-21 15:47:18
'__getitem __()'只有两个参数,你需要三个参数。我相信这是问题所在。 – kindall 2012-04-22 00:23:27