鱼C论坛

 找回密码
 立即注册
查看: 2715|回复: 11

两点之间距离这样写怎么不可以!望哪位帮忙看一下

[复制链接]
发表于 2016-12-27 00:09:08 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 鱼人2代 于 2016-12-27 00:10 编辑

会出现<__main__.Line object at 0x03477BF0>

import math

class Point:
    def __init__(self,x1 = 1,x2 = 4,y1 = 1,y2 = 5):
        self.x1 = x1
        self.x2 = x2
        self.y1 = y1
        self.y2 = y2

    def getX(self):
        return self.x2 - self.x1

    def getY(self):
        return self.y2 - self.y1


class Line():
    def __init__(self):

        self.x = Point().getX()
        self.y = Point().getY()
        self.len = math.sqrt(self.x*self.x + self.y*self.y)
   
        return self.len


print(Line())
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-27 06:57:25 From FishC Mobile | 显示全部楼层
你print的是你定义的Line对象,计算公式(x1-x2)^2+(y1-y2)^2是对的。如果你要打印数值,你把Line定义的最后一句改为print (self.len) 调用的时候直接Line()就可以了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-27 08:51:44 | 显示全部楼层
学习学习。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-27 11:14:16 | 显示全部楼层
  1. import math

  2. class Point:
  3.     def __init__(self,x1 = 1,x2 = 4,y1 = 1,y2 = 5):
  4.         self.x1 = x1
  5.         self.x2 = x2
  6.         self.y1 = y1
  7.         self.y2 = y2

  8.     def getX(self):
  9.         return self.x2 - self.x1

  10.     def getY(self):
  11.         return self.y2 - self.y1


  12. class Line():
  13.     def length(self):

  14.         self.x = Point().getX()
  15.         self.y = Point().getY()
  16.         self.len = math.sqrt(self.x*self.x + self.y*self.y)
  17.    
  18.         return self.len

  19. line = Line()
  20. len1 = line.length()
  21. print(len1)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-27 11:34:20 | 显示全部楼层
jerryxjr1220 发表于 2016-12-27 06:57
你print的是你定义的Line对象,计算公式(x1-x2)^2+(y1-y2)^2是对的。如果你要打印数值,你把Line定义的最后 ...

还是会出现<__main__.Line object at 0x03477BF0>,不过答案出来了,<__main__.Line object at 0x03477BF0>这个怎么可以能去掉?请问知道吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-27 11:38:01 | 显示全部楼层

这样可以,不过第二个不可以用init吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-27 11:43:08 | 显示全部楼层
鱼人2代 发表于 2016-12-27 11:34
还是会出现,不过答案出来了,这个怎么可以能去掉?请问知道吗?

不要打印对象啊,怎么可能还会输出对象地址呢?
  1. import math

  2. class Point:
  3.     def __init__(self,x1 = 1,x2 = 4,y1 = 1,y2 = 5):
  4.         self.x1 = x1
  5.         self.x2 = x2
  6.         self.y1 = y1
  7.         self.y2 = y2

  8.     def getX(self):
  9.         return self.x2 - self.x1

  10.     def getY(self):
  11.         return self.y2 - self.y1


  12. class Line():
  13.     def __init__(self):

  14.         self.x = Point().getX()
  15.         self.y = Point().getY()
  16.         self.len = math.sqrt(self.x*self.x + self.y*self.y)
  17.    
  18.         print (self.len)

  19. Line()
复制代码

输出:
5.0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-27 11:45:52 | 显示全部楼层
jerryxjr1220 发表于 2016-12-27 11:43
不要打印对象啊,怎么可能还会输出对象地址呢?

输出:

哦哦,好的,谢谢了!我写成print(Line())了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-27 11:53:51 | 显示全部楼层
鱼人2代 发表于 2016-12-27 11:34
还是会出现,不过答案出来了,这个怎么可以能去掉?请问知道吗?

而且你默认函数最好设定在Line的类定义里,这样直接在Line调用时可以赋值,比如这样:
  1. import math

  2. class Point:
  3.     def __init__(self,x1,x2,y1,y2):
  4.         self.x1 = x1
  5.         self.x2 = x2
  6.         self.y1 = y1
  7.         self.y2 = y2

  8.     def getX(self):
  9.         return self.x2 - self.x1

  10.     def getY(self):
  11.         return self.y2 - self.y1


  12. class Line():
  13.     def __init__(self,a=1,b=4,c=1,d=5):
  14.         self.x = Point(a,b,c,d).getX()
  15.         self.y = Point(a,b,c,d).getY()
  16.         self.len = math.sqrt(self.x*self.x + self.y*self.y)
  17.    
  18.         print (self.len)

  19. Line(1,2,3,4)
复制代码

输出:
1.4142135623730951
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-27 11:55:20 | 显示全部楼层
Line()不赋值,就直接输出5.0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-27 12:25:55 | 显示全部楼层
jerryxjr1220 发表于 2016-12-27 11:55
Line()不赋值,就直接输出5.0

好的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-27 16:23:06 | 显示全部楼层
鱼人2代 发表于 2016-12-27 11:38
这样可以,不过第二个不可以用init吗?

可以,但是如果用__init__的话就不能使用return了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-24 16:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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