如何比较Python对象的两个实例?

2024-09-27 21:25:26 发布

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

尝试比较两个对象的数据成员;但是,错误消息没有具体的细节,这使我几乎没有关于如何进行更正的信息

class Person: 
  def __init__(self, name, age, id):
    self.name = name
    self.age = age
    self.id = id

  def same_person(Person lhs, Person rhs):
    return lhs.id == rhs.id

person1 = Person("David Joyner", 30, 901234567)
person2 = Person("D. Joyner", 29, 901234567)
person3 = Person("David Joyner", 30, 903987654)
# print calls provided as part of an exercise: not my implementation
print(same_person(person1, person2))
print(same_person(person1, person3))
  • Python 3.6.5版
  • 命令:python个人.py你知道吗
  • 错误消息
  • SyntaxError
  • 如果是缩进级别,则显示以下错误
  • IndentationError

Tags: nameselfid消息agedef错误person
3条回答

同一个人是类Person的方法,应该只接受一个参数作为输入。应定义为:

def same_person(self, other):
    return self.id == other.id

被称为

person1.same_person(person2)

或者可以重写__eq__方法(即==)。你知道吗

def __eq__(self, other):
    return self.id == other.id

为了能像person1 == person2那样做

其他答案是正确的,并且提供了最好的方法,但我意识到你写道:

print calls provided as part of an exercise: not my implementation

print(same_person(person1, person2))
print(same_person(person1, person3))

这个练习可能希望您在类之外定义一个函数。您可以通过从类中删除该函数并在类外不缩进地编写它来实现这一点(不提供类类型)。例如:

class Person: 
    def __init__(self, name, age, id):
        self.name = name
        self.age = age
        self.id = id

def same_person(lhs, rhs):
    return lhs.id == rhs.id

person1 = Person("David Joyner", 30, 901234567)
person2 = Person("D. Joyner", 29, 901234567)
person3 = Person("David Joyner", 30, 903987654)

print(same_person(person1, person2))
print(same_person(person1, person3))
class Person: 
   def __init__(self, name, age, id):
      self.name = name
      self.age = age
      self.id = id

   def same_person(self, lhs, rhs):
      return lhs.id == rhs.id

除非使用类型,否则不必在python中定义lhs和rhs类型。你知道吗

相关问题 更多 >

    热门问题