多态性Python

2024-04-26 18:10:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我在学Python,有问题。 运行此代码后,将显示结果

“我叫鲍勃,工资五万,工作很忙main.pizza机器人对象位于0x00000000028EECC0>

我希望为str中的每个对象显示“work”,而不是调用目标工作()对于每个对象。你知道吗

在这个问题中,输出应该是“姓名是Bob,薪水是50000,工作是Bob做披萨”

谢谢

class Employee():
    def __init__(self,name,salary = 0):
        self.name = name
        self.salary = salary
    def giveraise(self,percent):
        self.salary = self.salary + self.salary * percent
    def __str__(self):
        return "Name is {0} and salary is{1} and work is {2}".format(self.name,self.salary,self.work)
    def work(self):
        print(self.name ,"does stuff")

class chef(Employee):
     def __init__(self,name):
         Employee.__init__(self,name,50000)
     def work(self):
         print(self.name ,"makes food")

class PizzaRobot(chef):
     def __init__(self,name):
         chef.__init__(self,name)
     def work(self):
         print(self.name ,"makes pizza")

if __name__ == "__main__":
    bob = PizzaRobot("Bob")
    print(bob)

Tags: 对象nameselfinitismaindefemployee
1条回答
网友
1楼 · 发布于 2024-04-26 18:10:06

self.work是一个函数,因此你的行为。你知道吗

work函数中,使用return:

 def work(self):
     return self.name + " makes food")

然后,你可以使用

return "Name is {0} and salary is{1} and work is {2}".format(self.name,self.salary,self.work())

(注意末尾的()self.work()。您将调用函数)

相关问题 更多 >