2012-04-13 14 views
-1

Also einige Probleme mit einer Klasse Methoden. Ich werde alle Informationen veröffentlichen, die ich habe. Ich muss die relevanten Methoden für die gestellten Fragen schreiben.Class method Probleme - Python

import math 
epsilon = 0.000001 
class Point(object): 
    def __init__(self, x, y): 
     self._x = x 
     self._y = y 

    def __repr__(self): 
     return "Point({0}, {1})".format(self._x, self._y) 

Erste Frage; Ich muss eine Methode namens disttopoint hinzufügen, die ein anderes Punktobjekt p als Argument verwendet und den euklidischen Abstand zwischen den beiden Punkten zurückgibt. Ich kann math.sqrt verwenden.

Testfälle:

abc = Point(1,2) 
efg = Point(3,4) 
abc.disttopoint(efg) ===> 2.8284271 

Zweite Frage; füge eine Methode namens isnear hinzu, die ein weiteres Punktobjekt p als Argument nimmt und True zurückgibt, wenn der Abstand zwischen diesem Punkt und p kleiner ist als epsilon (oben im Klassenskelett definiert) und andernfalls False. Verwenden Sie disttopoint.

Testfälle:

abc = Point(1,2) 
efg = Point(1.00000000001, 2.0000000001) 
abc.isnear(efg) ===> True 

Dritte Frage; füge eine Methode namens addpoint hinzu, die ein anderes Punktobjekt p als Argument nimmt und diesen Punkt so ändert, dass es die Summe aus dem alten Wert und dem Wert von p ist.

Testfälle;

abc = Point(1,2) 
efg = Point(3,4) 
abc.add_point(bar) 
repr(abc) ==> "Point(4,6) 
+1

Was weißt du nicht zu tun? –

+0

Sie könnten mit etwas hinzugefügten Python-Magie tun: anstatt eine Methode 'add_point' (oder so gut wie es), könnten Sie' __iadd__'; dann würdest du 'abc + = bar' machen. Wiederholen Sie den Vorgang für andere Operatoren (siehe Dokumentation für das, was sie alle sind) –

Antwort

0
class Point(object): 
    # __init__ and __repr__ methods 
    # ... 
    def disttopoint(self, other): 
     # do something using self and other to calculate distance to point 
     # result = distance to point 
     return result 

    def isnear(self, other): 
     if (self.disttopoint(other) < epsilon): 
      return True 
     return False 
+0

was sollte der letzte sein? ich denke, dass ich die ersten zwei herausfinden kann, aber das letzte, das ich nicht kenne – Hoops

+0

@Hoops meinst du isnear oder add_point? Jordi hat im Grunde gezeigt, wie zu tun, add_point –

+0

woops bedeuten isnear – Hoops

0

Was ist Ihr Problem hier?

stecken Sie fest mit Methoden erstellen?

Class Point(object): 
    # make it part of the class as it will be used in it 
    # and not in the module 
    epsilon = 0.000001 

    def __init__(self, x, y): 
     self._x = x 
     self._y = y 

    def __repr__(self): 
     return "Point({0}, {1})".format(self._x, self._y) 

    def add_point(self, point): 
     """ Sum the point values to the instance. """ 
     self._x += point._x 
     self._y += point._y 

    def dist_to_point(self, point): 
     """ returns the euclidean distance between the instance and the point.""" 
     return math.sqrt(blablab) 

    def is_near(self, point): 
     """ returns True if the distance between this point and p is less than epsilon.""" 
     return self.dist_to_point(point) < self.epsilon 

hilft Ihnen das?

Jordi

+0

Ich bin nur verwirrt darüber, wie man alles zusammenhält. die ersten zwei, die ich denke, ich habe, die letzte nicht so viel – Hoops

0
def dist_to_point(self, point): 
     """ returns the euclidean distance between the instance and the point.""" 
     return math.sqrt(res) 

Was soll die Variable "res" enthalten?

Prost