파이썬 튜플 비교 질문입니다.
class Student:
    def __init__(self, name, korean, math, english, science):
        self.name = name
        self.korean = korean
        self.math = math
        self.english = english
        self.science = science

    def get_sum(self):
        return self.korean + self.math +\
            self.english + self.science

    def get_average(self):
        return self.get_sum() / 4

    def __str__(self):
        return "{}\t{}\t{}".format(\
            self.name,\
            self.get_sum(),\
            self.get_average())

    def __eq__(self, value):
        return self.get_sum() == value.get_sum()

    def __ne__(self, value):
        return self.get_sum() != value.get_sum()

    def __gt__(self, value):
        return self.get_sum() > value.get_sum()

    def __ge__(self, value):
        return self.get_sum() >= value.get_sum()

    def __lt__(self, value):
        return self.get_sum() < value.get_sum()

    def __le__(self, value):
        return self.get_sum() <= value.get_sum()



# 학생 리스트를 선언함
students = [
   Student("박인성", 87, 98, 88, 95),
   Student("연하진", 92, 98, 96, 98),
   Student("구지연", 76, 96, 94, 90),
   Student("나선주", 98, 92, 96, 92),
   Student("윤아린", 95, 98, 98, 98),
   Student("윤명월", 64, 88, 92, 92)
]

# 학생을 선언합니다.
student_a = Student("박인성", 87, 98, 88, 95),
student_b = Student("연하진", 92, 98, 96, 98),

print("student_a == student_b", student_a == student_b)
print("student_a != student_b", student_a != student_b)
print("student_a > student_b", student_a > student_b)
print("student_a >= student_b", student_a >= student_b)
print("student_a < student_b", student_a < student_b)
print("student_a <= student_b", student_a <= student_b)
  1. 언더스코어 메소드의 value 변수에는 어떤 값이 들어가는 건가요?
 def __eq__(self, value):
        print(self) # self 출력부분
        return self.get_sum() == value.get_sum()

    def __ne__(self, value):
        return self.get_sum() != value.get_sum()

    def __gt__(self, value):
        return self.get_sum() > value.get_sum()

    def __ge__(self, value):
        return self.get_sum() >= value.get_sum()

    def __lt__(self, value):
        return self.get_sum() < value.get_sum()

    def __le__(self, value):
        return self.get_sum() <= value.get_sum()
  1. self나 value에 뭐가 들어가나 알아보려고 위의 코드처럼 일단 eq 메소드에서 self를 일단 출력시켰더니
출력

student_a == student_b False
박인성  368     92.0        
student_a != student_b True 
박인성  368     92.0        
student_a > student_b False
박인성  368     92.0
student_a >= student_b False
박인성  368     92.0
student_a < student_b True
박인성  368     92.0
student_a <= student_b True

보니까



# 학생을 선언합니다.
student_a = Student("박인성", 87, 98, 88, 95),
student_b = Student("연하진", 92, 98, 96, 98),

이 상태에서 코드를 실행시키면 
student_a == student_b False
박인성  368     92.0        
student_a != student_b True 
박인성  368     92.0        
student_a > student_b False
박인성  368     92.0
student_a >= student_b False
박인성  368     92.0
student_a < student_b True
박인성  368     92.0
student_a <= student_b True

이렇게 self 변수 출력이 여러 번 되고






student_a = Student("박인성", 87, 98, 88, 95)
student_b = Student("연하진", 92, 98, 96, 98)

콤마를 없애면 서로 출력이 다릅니다..

박인성  368     92.0
student_a == student_b False
student_a != student_b True
student_a > student_b False
student_a >= student_b False
student_a < student_b True
student_a <= student_b True

왜 그런 건가요?

개발자가_되어보자 58

2021년 2월 23일 4:04 오후

value에는 student_b 객체가 전달됩니다. - 박응용님, 2021년 2월 23일 9:02 오후 추천 , 대댓글
@박응용님 답변 주셔서 감사합니다! - 개발자가_되어보자님, 2021년 2월 25일 3:59 오후 추천 , 대댓글
목록으로