개체의 특성 값이 변경 될 때마다 트리거하는 처리기를 만들려고합니다. 저는 여전히 파이썬에 대한 새로운 지식을 가지고 있으며 실제로 작동하는 방법을 찾지 못했습니다. , 다음 주 파일객체를위한 파이썬 생성자를 만드시겠습니까?
# ../main.py
from handler import Handler
class Value:
def __init__(self, v=None):
self.value = v
def createObject(v):
obj = Value(v)
Handler(obj)
return obj
myObj = createObject(5)
myObj.handler.start()
이 뜻입니다
# ../handler.py
import copy
class Handler:
def __init__(self, obj):
# Let the object know it's handler
obj.handler = self
# Copy the object
self.copy = copy.deepcopy(obj)
# Let handler know it's object
self.obj = obj
# Handler not running atm.
self.running = False
def start(self):
# Running
self.running = True
# As long as running...
while self.running:
# Loop through all objects attributes
for attr in self.obj.__dict__:
# If attribute's value has changed
if self.copy.__dict__[attr] != self.obj.__dict__[attr]:
# Print out a message
print("%s was changed to %s" %(attr, self.obj.__dict__[attr]))
# Update the value to our copy
self.copy.__dict__[attr] = self.obj.__dict__[attr]
def stop(self):
# Not running
self.running = False
을 : 그것은 내가 달성하기 위해 노력하고있어 보여 그냥, 이것은 내가 무엇을했는지, 그리고 나는 이런 식으로 작동하지 않을 수있어 그러나,이 텍스트 결과를 인쇄 할 결과 : handler was changed to <Handler.Handler object at 0x0000000002B1FC50>
하지만 여기에 처리기를 변경하지 않는거야? 또한 Handler.start() 함수의 while 루프로 인해 프로그램이 멈 춥니 다. 어떻게 작동시킬 수 있습니까?
해결하려는 문제는 무엇인가요? – user4815162342
"핸들러가 ...로 변경되었습니다"라는 프로그램이 인쇄되는 이유는 무엇이며, 프로그램을 Handler.start()에 무한 루프가되지 않게하려면 어떻게해야합니까? –
"해결하려는 문제는 무엇인가?"는 실제로 수행해야하는 것과 관련이없는 저고준 목표가 아니라 고차원 목표를 제시 할 것을 요구합니다. –