Employee.cs

class Employee:                                 # Visitor::ConcreteElement
    def __init__(self, name, salary, vDays, sDays):
        self.name = name
        self.salary = salary
        self.sickDays = sDays
        self.vacDays = vDays
    def accept(self, v):
        source = "v.visit_%s(self)"%self.__class__.__name__
        eval(source)        ; print source

《Note》参考文献との違い

  • 引数の型で処理を選択する代わりに、メソッド名に実行時の型情報を埋め込みます。