第38讲课后习题编程问题请教
定义Point和Line,使用Getline求直线的长度import math
class Point():
def __init__(self,x,y):
self.x = x
self.y = y
def getX(self):
return self.x
def getY(self):
return self.y
class Line():
def __init__(self,p1,p2):
self.x = p1.getX() - p2.getX() #这里为什么可以直接调用另一个类中函数getX()
self.y = p1.getY() - p2.getY()
self.line =math.sqrt(self.x*self.x + self.y*self.y)
def Getline(self):
print(self.line)
p1 = Point(1,7)
p2 = Point(4,2)
line = Line(p1,p2)
line.Getline()
请问:
getX()函数是定义在Point类中,为什么在Line类中就直接调用了,没有通过继承
继承的话应该理解成有同样的属性。您继承您父母的基因,所以您会有您父母的一些特点。get() 是针对类的正式取值方法,没有什么不可以。Line() 这里并不是继承,而是要 Point() 里面的一些资料而已,它跟 Point() 的架构绝然不同。 因为line类中传入了point对象,该对象当然可以使用它自己的所有方法 因为实例中传入的p1和p2是Point对象,而Point类中定义了getX和getY方法。至于为什么会不报错,因为Python是解释型语言,只有在运行到Line类的__init__方法时,才会判断p1、p2是否有getX和getY方法,如果有这些方法就继续执行,没有的话才会报错。
页:
[1]