YIRANNA 发表于 2021-2-1 19:45:58

关于继承的一些问题

import math
import random
a=(int(input('坐标范围:')))
class Point():
    def __init__(self):
      self.x=random.randint(0,a)
      self.y=random.randint(0,a)
      print(self.x,self.y)
class line(Point):
    def __init__(self,b):
      super().__init__()
      print('需要输入两个点进行计算 例 a=line(b)')
    def lenth(self):
      lines=math.sqrt((abs(self.x-b.x))**2+(abs(self.y+b.y)**2))
      print(lines)
b=Point()
c=line.lenth(b)
这段代码的结果是b 输出了xy坐标但是c没有输出,原因是什么
题目是 视频 继承 那一期的动动手

qiuyouzhi 发表于 2021-2-1 19:51:39

如果按值来看,输出了,print(lines)
按变量来看,没有输出,因为你没有print(c)

YIRANNA 发表于 2021-2-1 20:11:33

qiuyouzhi 发表于 2021-2-1 19:51
如果按值来看,输出了,print(lines)
按变量来看,没有输出,因为你没有print(c)

但是c=line(Point)不是继承了Point 的方法吗?

笨鸟学飞 发表于 2021-2-1 20:15:58

没有实例化line对象(仅仅是调用了方法),因此不会触发__init__()函数

_2_ 发表于 2021-2-1 20:18:09

YIRANNA 发表于 2021-2-1 20:11
但是c=line(Point)不是继承了Point 的方法吗?

只有定义的时候才能用继承
class line(Point):
    ...
在实例化对象的时候,括号里面的参数就都是传给类里的 __init__() 方法(如果有)

qiuyouzhi 发表于 2021-2-1 20:21:14

YIRANNA 发表于 2021-2-1 20:11
但是c=line(Point)不是继承了Point 的方法吗?

??哪里有这行代码
定义类的时候是不会运行的,只是定义而已

°蓝鲤歌蓝 发表于 2021-2-1 21:46:59

本帖最后由 °蓝鲤歌蓝 于 2021-2-1 21:54 编辑

1. 你都没有 print(c) ,怎么会打印 c 呢?
2.c=line.lenth(b) 根本就没有调用 __init__方法
页: [1]
查看完整版本: 关于继承的一些问题