Wie gehen Sie die __enthält__ - Methode in python?

Ich habe Schwierigkeiten zu verstehen, wie man richtig eine enthält Methode in meiner Klasse. Ich weiß, es verwendet automatisch den operator "in", wenn Sie es nennen, ich glaube einfach nicht, ich verstehe, wie es ordnungsgemäß eingestellt werden.

Muss ich verwenden, um zu sehen, wenn anotherCircle wird, die in einem bestimmten Kreis (beide von den Eingaben des Benutzers). Der prof hatte uns zwei verschiedene Arten von Methoden für diese.

Die erste, die ich habe keine Probleme mit mehr oder weniger verstehen, was es tut, ist Es wie folgt:

def contains(self, circle2d):
  dist = math.sqrt((circle2d._x - self._x)**2 + (circle2d._y - self._y)**2) #Distance of second circle's coords from the first circle's coords
  if dist + circle2d._radius <= self._radius:
     return True

Aber die nächste Methode, die angeblich die gleiche Sache zu tun, verwendet die enthält Methode, so dass wir nennen es mit in in der main-Funktion. Alles, was ich habe, ist dies:

def __contains__(self, anotherCircle):
    if anotherCircle in self:
        return True 

Bekomme ich mehrere Fehler, wenn ich versuche, diese laufen. Ich glaube, ich bin fehlt etwas, auf das selbst, aber ich bin mir nicht sicher, was? Könnte jemand bitte versuchen, mir zu erklären, was genau Sie tun müssen, wenn Sie schreiben eine enthält Methode wie diese?

  • if anotherCircle self ist nicht, dass der Aufruf von enthält in sich selbst? Sollten Sie nicht tun return self.contains(anotherCircle) in der Methode Körper?
  • Ich weiß es nicht. Ich denke, das ist, was ich gefragt wurde
  • ja, Sie fordern __contains__ rekursiv, wenn Sie "in" in __contains__.
  • Ja, was Sie gesagt hat tatsächlich funktioniert! Dank
Schreibe einen Kommentar