次のコードは、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
42
編集1(kindallとjsbuenoへの応答):次のようにして、割り当てられた値を呼び出そうとしe["alpha"]
ています。
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