我创建了这个类的人:
class Person(object):
def __init__(self, name, age, gender):
self._name = name
self._age = age
self._gender = gender
self._friend = None
def __eq__(self, person):
return str(self) == str(person)
def __str__(self):
if self._gender == 'M':
title = 'Mr'
elif self._gender == 'F':
title = 'Miss'
else:
title = 'Ms'
return title + ' ' + self._name + ' ' + str(self._age)
def __repr__(self):
return 'Person: ' + str(self)
def get_name(self):
return self._name
def get_age(self):
return self._age
def get_gender(self):
return self._gender
def set_friend(self, friend):
self._friend = friend
def get_friend(self):
return self._friend
我现在需要3个功能:
使用Person类编写一个函数print_friend_info(person)
,它接受一个Person类型的参数,并且:
一个函数create_fry()
,它返回一个表示Fry的Person实例。Fry今年25岁,全名是“Philip J.Fry”
一种函数make_friends(person_one, person_two)
,它将每个参数设置为另一个参数的朋友。
我得到的是:
^{pr2}$错误处理程序显示"type object 'Person' has no attribute '_name'"
一旦你有了一个
Person
对象,比如用标签person
,你就可以像这样访问它的函数:不需要将
^{pr2}$person
传递给成员函数get_age
:但是
get_age
的定义确实有一个参数self
:当您在一个对象上调用它时,它被隐式传递给函数。因此
person
作为self
传递。您可以在上面的错误消息中看到我们传递了两个参数,隐式self
person
,和(错误的,不需要的)显式person
。在self._age
与person._age
相同,但被封装,并隐藏在'getter'接口后面。在因此,要修复代码,请删除:
并更改调用,如
person.get_age(person)
,to person.get_age()
。在你想删除这行吗
从
print_friend_info(person):
函数。在这行代码不会创建新的Person实例,即使创建了,也不需要创建新的Person实例。您已经将person作为参数传入,您只需检索他的信息。在
由于类是python中的对象,所以通过}是相同的。然后,当您试图在
person= Person
操作,您就等于说person
与{person
上get_name
时,这是不起作用的,因为person
不是类的实例,而是一个类对象。因此它没有_name
属性。在用适当的参数实例化它之后,它将只有一个_name
属性。在^{pr2}$
这个代码似乎不对。它不打印数据,而是返回数据。
"""
之间的文本没有任何作用,因为您已经用return
离开了函数应该用
如果参数“person”已经是一个实例,那么不明白您试图将什么放入print_friend_info中
我想你的问题是这条线
通过这样做,您只需重写person实例,并将其替换为person类的定义
试着把那条线拉开,看看发生了什么
相关问题 更多 >
编程相关推荐