读一本书,我遇到了这个代码......
# 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
上课?因为我没有明确告诉它。人(模块不同于人(类)
非常感谢任何帮助:)