Boss.cs

class Boss(Employee):                           # Visitor::ConcreteElement
    def __init__(self, name, salary, vdays, sdays, bonusDays=None):
        Employee.__init__(self, name, salary, vdays, sdays)
        self.bonusDays = bonusDays
    def accept(self, v):
        source = "v.visit_%s(self)"%self.__class__.__name__
        eval(source)        ; print source

《Note》参考文献との違い

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