本を読んで、このコードに出くわしました...
# module person.py
class Person:
def __init__(self, name, job=None, pay=0):
self.name = name
self.job = job
self.pay = pay
def lastName(self):
return self.name.split()[-1]
def giveRaise(self, percent):
self.pay = int(self.pay *(1 + percent))
def __str__(self):
return "[Person: %s, %s]" % (self.name,self.pay)
class Manager():
def __init__(self, name, pay):
self.person = Person(name, "mgr", pay)
def giveRaise(self, percent, bonus=.10):
self.person.giveRaise(percent + bonus)
def __getattr__(self, attr):
return getattr(self.person, attr)
def __str__(self):
return str(self.person)
やりたいことはできますが、クラスの__getattr__
機能がわかりません。クラスManager
から他のすべての属性を委任することを知っています。Person
しかし、私はそれがどのように機能するかを理解していません。たとえば、なぜPerson
クラスから?はっきり言ってないから。person(module は Person(class) とは異なります
どんな助けでも大歓迎です:)