Python:__eq__및 __str__함수 사용 예

2802 단어 Pythonstreq함수
하나.__eq__방법
우리가 하나의 종류를 정의할 때, 종종 한 종류가 실례화된 두 대상에 대해 이 두 대상이 완전히 같은지 아닌지를 판단하려고 한다.일반적인 상황에서 우리는 같은 유형이 실례화된 두 대상의 속성이 모두 같다면 이 두 대상은 같다고 생각한다.그러나 만약에 우리가 직접'=='로 이 두 대상이 서로 알고 있는지 아닌지를 판단한다면 결과는 반드시 같지 않을 것이다. 왜냐하면 이 두 대상의 주소는 반드시 다르기 때문이다. 메모리에 있는 서로 다른 구역, 예를 들어 우리는 코드가 있기 때문이다.

class Item:
 def __init__(self, name, weight):
  self.name=name
  self.weight=weight
 


cat_1 = Item('Cat', 5)
cat_2 = Item('Cat', 5)

print(cat_1 == cat_2)
이 코드에서 우리는 두 개의'item'대상을 만들었는데, 그것들의 속성'name'과'weight'는 완전히 일치한다. 이 프로그램은 보기에 정확하고 True를 출력해야 하지만, 실제 출력은 다음과 같다.
False
원인은 이 두 대상의 주소가 다르기 때문이다. 그러면 어떻게 속성이 같기만 하면 두 대상이 같을 수 있겠는가?그게 이용__eq__방법은 판단을 한다. 이 방법은 기본적으로 두 개의 매개 변수가 있는데, 하나는 self이고, 다른 하나는 other이다.즉, 자신의 속성과other 대상의 속성을 각각 비교하여 성공을 비교하면 True, 실패를 비교하면 False로 돌아간다.너도 비교하고 싶은 속성이 어떤 것들이 있는지 사용자 정의할 수 있다. 반드시 모든 속성이 같아야만 똑같은 것은 아니다.코드가 있습니다.

class Item:
 def __init__(self, name, weight):
  self.name=name
  self.weight=weight
 
 def __eq__(self, other):
  # `__eq__` is an instance method, which also accepts
  # one other object as an argument.
  
  if type(other)==type(self) and other.name==self.name and other.weight==self.weight:
   return True
  else:
   return False#  False , 



cat_1 = Item('Cat', 5)
cat_2 = Item('Cat', 5)

print(cat_1.__eq__(cat_2)) # should evaluate to True
print(cat_1 == cat_2) # should also evaluate to True
이렇게 하면 두 개의 True가 인쇄됩니다.
2.__str__방법
우리가 만약 자신이 만든 대상을 직접 인쇄한다면 일반적으로 다음과 같다. 예를 들어 우리는 코드가 있다.

print(cat_1)
출력:
<__main__.Item object at 0x7f8e3d99f190
이것은 보기에 매우 보기 싫은 출력이며, 출력된 것은 이 대상의 종류와 주소이다.하지만 우리는 이 출력을 원하는 모양으로 바꿀 수 있다. 그것은 __를 이용하는 것이다str__방법우리는 이 방법을 다시 써서 이것을 하나의 값으로 되돌려준다. 그러면 마지막으로 출력하는 것은 우리의 되돌려 주는 값이다. 아래와 같다.

class Item:
 def __init__(self, name, weight):
  self.name=name
  self.weight=weight
 
 def __eq__(self, other):
  
  if type(other)==type(self) and other.name==self.name and other.weight==self.weight:
   return True
  else:
   return False
 def __str__(self):
  return 'the name of this cat is {}'.format(self.name)
다시 작성 및 인쇄:

cat_1 = Item('Cat', 5)
cat_2 = Item('Cat', 5)

print(cat_1)
print(cat_2)
출력 가능:
the name of this cat is Cat
the name of this cat is Cat
이렇게 하면 이 출력이 그렇게 번거로워 보이지 않을 것이다. 사용자 정의 출력은 과연 많이 뚜렷해졌구나!
지금까지 Python:__eq__및 __str__함수 사용 예제에 대한 자세한 내용, Python __eq__및 __str__함수 자료는 우리 다른 관련 문장에 주목하세요!

좋은 웹페이지 즐겨찾기