gpt4 book ai didi

python - 多态Python

转载 作者:太空宇宙 更新时间:2023-11-03 18:05:11 24 4
gpt4 key购买 nike

我正在学习 python,有疑问。运行这段代码后,显示的结果是

“名字是鲍勃,工资是50000,工作是主要的。PizzaRobot 对象位于 0x00000000028EECC0>>”

我希望为 str 中的每个对象显示“work”,而不是为每个对象调用 obj.work() 。

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

谢谢

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)

最佳答案

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()。您将调用该函数)

关于python - 多态Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27015186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com