ich bin recht neu in Python und mache das grade in einem Unimodul.
Ich habe folgenden Code geschrieben und bekomme beim Nutzen der "p_on_line" Funktion immer einen AttributeError?
Obwohl ich die LineSeg Klasse der Point Klasse untergeordnet habe.
Also Eingabe in die Konsole nutze ich: C.LineSeg.p_on_line(A,B)
Und die Konkrete Fehlermeldung ist: AttributeError: 'Point' object has no attribute 'p_on_line'
kann jemand helfen?
LG Leo
Code: Alles auswählen
import math
class Point:
#---------Punkte erschaffen, verschieben und überlappung checken
counter = 0
def __init__ (self, xWert, yWert) :
self.xWert = xWert
self.yWert = yWert
type(self).counter += 1
def __del__(self):
type(self).counter -= 1
def move(self, dx:float, dy:float):
self.xWert += dx
self.yWert += dy
def coincide(self, punkt):
if self.xWert == punkt.xWert and self.yWert == punkt.yWert :
return True
return False
class Circle(Point):
#----Kreise Erschaffen und checken, ob Punkt Teil davon ist
def __init__ (self, xWert, yWert, radius):
super().__init__(xWert, yWert)
self.radius = radius
def coincide(self, punkt):
if math.sqrt(punkt.xWert**2 + punkt.yWert**2) <= self.radius :
return True
return False
class LineSeg(Point):
#schauen ob Punkt auf einer Strecke zwischen zwei anderen Punkten liegt
def p_on_line(self, punkt1, punkt2):
if (self.yWert-punkt1.xWert)*(punkt2.xWert - punkt1.xWert) == (punkt2.yWert-punkt1.yWert)*(self.xWert - punkt1.xWert):
if (min(punkt1.xWert, punkt2.xWert) <= self.x <= max(punkt1.xWert, punkt2.xWert)) and \
(min(punkt1.yWert, punkt2.yWert) <= self.y <= max(punkt1.yWert, punkt2.yWert)):
return True
return False
[/code ]