m0_73219612 2022-09-03 20:59 采纳率: 100%
浏览 18
已结题

python面向对象组合类


class Person:
    def __init__(self,name,job=None,pay=0):
        self.name = name
        self.job = job
        self.pay = pay

    def getname(self):
        return self.name.split()[-1]

    def giveraise(self,percent):
        self.pay = round(self.pay * percent,2)

    def __repr__(self):
        return "[Person:{},{}]".format(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 __repr__(self):
        return str(self.person)

Manager类中构造函数下的 self.person = Person(name,"mgr",pay) 中Person(name,"mgr",pay)是什么意思
self.person.giveraise(percent+bonus)又是什么意思

  • 写回答

1条回答 默认 最新

  • 梦里逆天 2022-09-03 22:26
    关注

    Person(name,"mgr",pay)就是就是创建一个Person()对象,给它传3个参数:name、job(设置默认值为"mgr")和pay。self.person.giveraise(percent+bonus)这里调用的是Person()对象的giveraise()方法,传的参数值是percent与bonus相加之后的值。大概就是这个意思。你可以调用这些方法运行一下看看效果。

    if __name__ == '__main__':
        person = Person('李白', '诗人', 300)
        person.getname()
        person.giveraise(0.5)
        manager = Manager('张三', 180)
        manager.giveraise(0.4)
        print(person)
        print(manager)
    # [Person:李白,150.0]
    # [Person:张三,90.0]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月12日
  • 已采纳回答 9月4日
  • 修改了问题 9月3日
  • 创建了问题 9月3日

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法