我正在学习 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()
。您将调用该函数)
我是一名优秀的程序员,十分优秀!