Form1.cs

class Visitor_Forms(Form):                      # Visitor::ObjectStructure
    def __init__(self, **args):
        self.InitializeComponent()
        self.init()
    def init(self):
        self.empls =      # Employee
        for e in [
            Employee("Susan Bear", 55000, 12, 1),
            Employee("Adam Gehr", 150000, 9, 0),
            Employee("Fred Harris", 50000, 15, 2),
            Employee("David Oakley", 57000, 12, 2),
            Employee("Larry Thomas", 100000, 20, 6),
            Boss("Leslie Susi", 175000, 16, 4, bonusDays=12),
            Boss("Laurence Byerly", 35000, 17, 6, bonusDays=17),
            ]:
            self.empls.append(e)
  • 配列に代えて、list を利用しています。
    def InitializeComponent(self):
        self.lsVac = self._lsVac()
        self.btCompute = self._btCompute()
        self._Controls()
    def _lsVac(self):
        return ListBox(
            Location = Point(32, 32),
            Size = Size(216, 186),
            )
    def _btCompute(self):
        e = Button(
            Location = Point(88, 232),
            Size = Size(72, 24),
            Text = "Compute",
            )
        e.Click += self.btCompute_Click
        return e
    def _Controls(self):
        self.ClientSize = Size(292, 273)
        for e in self.lsVac, self.btCompute:
            self.Controls.Add(e)
        self.Text = "Visitor demo"
    def btCompute_Click(self, sender, e):
        vac = VacationVisitor()
        bvac = bVacationVisitor()
        for e in self.empls:
            e.accept(vac)
            e.accept(bvac)
        self.lsVac.Items.Add("Total vacation days=%s"     %vac.totalDays)
        self.lsVac.Items.Add("Total boss vacation days=%s"%bvac.totalDays)