(蟒蛇)为类 PetData 定义成员方法 print_all()。使用基类的 print_all() 方法

(PYTHON) Define a member method print_all() for class PetData. Make use of the base class' print_all() method

提问人:tranese 提问时间:7/24/2023 最后编辑:tranese 更新时间:7/24/2023 访问量:631

问:

任务:为类 PetData 定义成员方法 print_all()。使用基类的 print_all() 方法。 带有输入的给定程序的示例输出:“Fluffy”5 4444 常用中文名:毛茸茸 年龄:5岁 编号: 4444

第一个错误是 ID: 4444 后面没有换行符。当我解决这个问题时,我开始在 ID: 之前得到 NONE 这个词。如果我知道它来自哪里,我可能会弄清楚,但我什么都没有。请帮忙!!

class AnimalData:
    def __init__(self):
        self.full_name = ''
        self.age_years = 0

    def set_name(self, given_name):
        self.full_name = given_name

    def set_age(self, num_years):
        self.age_years = num_years

    # Other parts omitted

    def print_all(self):
        print('Name:',  self.full_name)
        print('Age:', self.age_years)


class PetData(AnimalData):
    def __init__(self):
        AnimalData.__init__(self)
        self.id_num = 0

    def set_id(self, pet_id):
        self.id_num = pet_id

    # FIXME: Add print_all() member method

""" Your solution goes here"""

user_pet = PetData()
user_pet.set_name(input())
user_pet.set_age(int(input()))
user_pet.set_id(int(input()))
user_pet.print_all()```


I've been working on this assignment for 2 days and I'm getting errors no matter what I try.  At one point the word NONE was randomly appearing before ID: 4444, still can't figure out where it's coming from.  PLEASE HELP!!!! 

Here is some of what I've tried and the errors I got.

## 
No newline after ID: 4444
def print_all(self):
AnimalData.print_all(self)
print('ID:', self.pet_id)

## 
ID number not showing in output.
def print_all(self):
print(AnimalData.print_all(self), 'ID:', self.id_num)

## 
No newline after ID: 4444
user_pet = PetData()
user_pet.set_name("Fluffy")
user_pet.set_age(5)
user_pet.set_id(4444)
user_pet.print_all()
Python OOP 方法 成员

评论

1赞 chepner 7/24/2023
使用正确的缩进,您的第一次尝试应该可以正常工作。
0赞 chepner 7/24/2023
为什么说ID行后面没有换行符?该调用绝对输出换行符。print
0赞 JonSG 7/24/2023
这回答了你的问题吗?如何在 Python 中从子类调用父类的方法?
0赞 tranese 7/24/2023
@chepner这些都是zyBooks给出的错误。当我回去检查缩进时,我注意到了这个问题。我有pet_id而不是id_num。谢谢一堆!
0赞 tranese 7/25/2023
@JonSG甚至没有接近,但谢谢!

答:

0赞 tranese 7/24/2023 #1

正确答案是:

def print_all(self):
    AnimalData.print_all(self)
    print('ID:', self.id_num)

感谢您@chepner的帮助!!