黑盒子 发表于 2020-6-28 10:50:08

第038讲:类和对象:继承 课后作业

import math as m

class Point():
    def __init__(self, x=0, y=0):
      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()
      self.y = p1.getY() - p2.getY()
      self.len = m.sqrt(self.x*self.x + self.y*self.y)
    def getLen(self):
      return self.len

>>> p1 = Point(1, 1)
>>> p2 = Point(4, 5)
>>> line = Line(p1, p2)
>>> line.getLen()
5.0

为啥类Line可以直接调用getX()和getY()函数呢?不是没有继承Point类吗,求助

heidern0612 发表于 2020-6-28 10:55:24

line在实例化的时候,不是传入俩参数么?

一个参数是实例化的p1,另一个是p2.

类把类当做参数传入。

Twilight6 发表于 2020-6-28 11:05:58

本帖最后由 Twilight6 于 2020-6-28 12:00 编辑



为啥类Line可以直接调用getX()和getY()函数呢?不是没有继承Point类吗,求助

因为你传入 Line(p1,p2) 的参数 p1 和 p2 都是Point 类的 实例化对象呀,是Point的实例对象就能用 Point 类的方法

所以在 Line 类里面调用了 p1,p2 实例对象,实际上就是在调用 Point 类里面的这些 getX 和 getY 方法呀
页: [1]
查看完整版本: 第038讲:类和对象:继承 课后作业