鱼C论坛

 找回密码
 立即注册
查看: 1354|回复: 6

关于继承的一些问题

[复制链接]
发表于 2021-2-1 19:45:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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没有输出,原因是什么
题目是 视频 继承 那一期的动动手
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-1 19:51:39 | 显示全部楼层
如果按值来看,输出了,print(lines)
按变量来看,没有输出,因为你没有print(c)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-1 20:11:33 | 显示全部楼层
qiuyouzhi 发表于 2021-2-1 19:51
如果按值来看,输出了,print(lines)
按变量来看,没有输出,因为你没有print(c)

但是c=line(Point)不是继承了Point 的方法吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-1 20:15:58 | 显示全部楼层
没有实例化line对象(仅仅是调用了方法),因此不会触发__init__()函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-1 20:18:09 From FishC Mobile | 显示全部楼层
YIRANNA 发表于 2021-2-1 20:11
但是c=line(Point)不是继承了Point 的方法吗?


只有定义的时候才能用继承
class line(Point):
    ...
在实例化对象的时候,括号里面的参数就都是传给类里的 __init__() 方法(如果有)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-1 20:21:14 | 显示全部楼层
YIRANNA 发表于 2021-2-1 20:11
但是c=line(Point)不是继承了Point 的方法吗?

??哪里有这行代码
定义类的时候是不会运行的,只是定义而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-1 21:46:59 | 显示全部楼层
本帖最后由 °蓝鲤歌蓝 于 2021-2-1 21:54 编辑

1. 你都没有 print(c) ,怎么会打印 c 呢?
2.
c=line.lenth(b)
根本就没有调用 __init__方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 16:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表