파이썬 튜플 비교 질문입니다.
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)
- 언더스코어 메소드의 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()
- 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
왜 그런 건가요?
개발자가_되어보자 님 442
2021년 2월 23일 4:04 오후
value에는 student_b 객체가 전달됩니다.
-
박응용님,
2021년 2월 23일 9:02 오후
추천
,
대댓글
@박응용님 답변 주셔서 감사합니다!
-
개발자가_되어보자님,
2021년 2월 25일 3:59 오후
추천
,
대댓글