파이썬 변수를 클래스에서 호출하여 변경하려고합니다. 내 실제 코드는 아래보다 훨씬 복잡하지만 아래에서 문제를 보여줍니다. 나는 자아가 문제의 클래스의 인스턴스를 의미한다는 것을 이해한다. 그래서 나는 self.val = 5 또는 무엇이든지 작동 할 것이라고 생각했다. 그러나 그렇지 않습니다.커스텀 클래스 (파이썬) 내의 객체 속성 변경하기
정말 확실한 것이 빠져있을 것입니다. 저는 방금 파이썬으로 수업을 시작했습니다. 그리고 그 모든 것은 꽤 간단 해 보였습니다. 몇 년 전부터 OOP를 기억해 냈습니다.하지만 여러 가지 시도를하고 몇 가지 구어를 구사하면서 저는 여전히 붙어 있습니다. 파이썬 2.7을 사용하고 있습니다.
from Tkinter import *
class mylistbox(Listbox):
def __init__(self, *args, **kwargs):
Listbox.__init__(self, *args, **kwargs)
self.val = 2 # setting val in this instance to 2
def change(self, newval): #in my real code this method does a lot more
self.val = newval # this doesn't change val in this instance!
print "self.val is now " + str(self.val)
def callback(x):
print x
top = Tk()
listbox = mylistbox(top)
listbox.pack()
b = Button(top, text="change", command = lambda zzz=7: listbox.change(zzz))
b.pack()
b = Button(top, text="answer", command = lambda myval=listbox.val: callback(myval))
b.pack()
top.mainloop()
내가 대답 변경을 클릭하면, 내가 얻을 출력은 대답 ...
- 2
- self.val 이제 7
- 2
감사! 당신과 유부녀는 기본적으로 똑같은 말을했지만 누군가에게 받아 들여지는 대답을 주어야하고, 당신은 조금 더 빨리 대답했습니다 ... – reedstonefood