12345678910111213141516 |
- import abc
- class Visitor:
- @abc.abstractmethod
- def default(self):
- pass
- class Visitable:
- def accept(self, visitor: Visitor):
- typename = type(self).__qualname__.replace(".", "_")
- lookup = "visit_" + typename
- if hasattr(visitor, lookup):
- return getattr(visitor, lookup)(self)
- else:
- return visitor.default(typename)
|