鱼C论坛

 找回密码
 立即注册
查看: 911|回复: 5

[已解决]38讲类和对象继承作业题

[复制链接]
发表于 2018-2-22 17:46:06 | 显示全部楼层 |阅读模式

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

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

x
题目不方便贴过来 不过主要是要创建一个点类和一个直线类,通过getLen函数求得两点之间直线长度

我的代码是这样的:

  1. import math as m

  2. class Point:
  3.     def __init__(self, x, y):
  4.         self.x = x
  5.         self.y = y



  6. class Line:


  7.     def getpoint(self,x1,y1,x2,y2):

  8.         self.x1 = getattr(point1,x)
  9.         self.x2 = getattr(point2,x)
  10.         self.y1 = getattr(point1,y)
  11.         self.y2 = getattr(point2,y)


  12.     def getLen(self):


  13.         print(m.sqrt((self.x1 - self.x2)**2 + (self.y1 - self.y2)**2))


  14. point1 = Point(1,5)
  15. point2 = Point(3,6)

  16. line = Line()

  17. line.getpoint()
  18. line.getLen()
复制代码



系统提示错误:

  1. Traceback (most recent call last):
  2.   File "/Users/williamwang/PycharmProjects/类和对象/venv/test1.py", line 32, in <module>
  3.     line.getpoint()
  4. TypeError: getpoint() missing 4 required positional arguments: 'x1', 'y1', 'x2', and 'y2'
复制代码



请问大神错在哪里~~~该怎么修改才行
最佳答案
2018-2-22 18:05:34
修改的:
  1. import math as m

  2. class Point:
  3.     def __init__(self, x, y):
  4.         self.x = x
  5.         self.y = y



  6. class Line:


  7.     def getpoint(self):

  8.         self.x1 = getattr(point1,'x')
  9.         self.x2 = getattr(point2,'x')
  10.         self.y1 = getattr(point1,'y')
  11.         self.y2 = getattr(point2,'y')


  12.     def getLen(self):


  13.         print(m.sqrt((self.x1 - self.x2)**2 + (self.y1 - self.y2)**2))


  14. point1 = Point(1,5)
  15. point2 = Point(3,6)

  16. line = Line()

  17. line.getpoint()
  18. line.getLen()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-22 17:56:28 | 显示全部楼层
需要传入四个参数。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-22 18:00:03 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-22 17:56
需要传入四个参数。

可是參數不是已經在getattr里取得了嗎
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-22 18:04:52 | 显示全部楼层
heywilliam 发表于 2018-2-22 18:00
可是參數不是已經在getattr里取得了嗎

那你就不要写
  1. getpoint(self,x1,y1,x2,y2)
复制代码
,写成
  1. getpoint()
复制代码

你在这个函数里面又没有用到这四个参数,你也不需要传入,那就不写了呗。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-22 18:05:34 | 显示全部楼层    本楼为最佳答案   
修改的:
  1. import math as m

  2. class Point:
  3.     def __init__(self, x, y):
  4.         self.x = x
  5.         self.y = y



  6. class Line:


  7.     def getpoint(self):

  8.         self.x1 = getattr(point1,'x')
  9.         self.x2 = getattr(point2,'x')
  10.         self.y1 = getattr(point1,'y')
  11.         self.y2 = getattr(point2,'y')


  12.     def getLen(self):


  13.         print(m.sqrt((self.x1 - self.x2)**2 + (self.y1 - self.y2)**2))


  14. point1 = Point(1,5)
  15. point2 = Point(3,6)

  16. line = Line()

  17. line.getpoint()
  18. line.getLen()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-22 18:13:19 | 显示全部楼层

感謝解答!原來犯了兩個錯誤啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-7 21:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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