Liên quan đến điều này SO question (C state-machine design), bạn có thể SO chia sẻ với tôi (và cộng đồng!) Các kỹ thuật thiết kế máy nhà nước Python của bạn không?Thiết kế máy trạng thái Python
UPDATE3: Tại thời điểm này, tôi sẽ cho một động cơ dựa trên những điều sau đây:
class TrackInfoHandler(object):
def __init__(self):
self._state="begin"
self._acc=""
## ================================== Event callbacks
def startElement(self, name, attrs):
self._dispatch(("startElement", name, attrs))
def characters(self, ch):
self._acc+=ch
def endElement(self, name):
self._dispatch(("endElement", self._acc))
self._acc=""
## ===================================
def _missingState(self, _event):
raise HandlerException("missing state(%s)" % self._state)
def _dispatch(self, event):
methodName="st_"+self._state
getattr(self, methodName, self._missingState)(event)
## =================================== State related callbacks
Nhưng tôi chắc chắn có tấn cách đi vào nó trong khi tận dụng tính chất năng động của Python (ví dụ điều động động).
Update2: Tôi sau khi thiết kế kỹ thuật cho "công cụ" nhận "sự kiện" và "gửi đi" dựa trên "trạng thái" của máy.
Để diễn giải điểm của Adam, tôi nghĩ rằng một số thông tin cụ thể hơn về những gì bạn đang cố gắng hoàn thành sẽ giúp ích. –
@Jason Orendorff: đủ công bằng. Tôi đã cập nhật câu hỏi cho phù hợp. – jldupont