鱼C论坛

 找回密码
 立即注册
查看: 827|回复: 3

[已解决]38课动手题为什么要专门return再方法get呢??

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

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

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

x
38课课后动动手,答案里Point类定义了方法getx和gety,但貌似不定义的话,Line类也可以直接读a.x,a.y,b.x,b.y哎,为什么还要专门return后再get呢???

import math as m

class Point():
    def __init__(self,x=0,y=0): #比单纯(self,x,y)保险
        self.x = x
        self.y = y

    """
    def getx(self):
        return self.x
    def gety(self):
        return self.y
    """
   
class Line():
    def __init__(self,a,b):
        
        """
        self.x = a.getx() - b.getx()
        self.y = a.gety() - b.gety()
        """
        
        self.x = a.x - b.x
        self.y = a.y - b.y      
        self.mylen = m.sqrt(self.x**2+self.y**2)
        
    def getLen(self):
        return self.mylen


a = Point(1,2)
b = Point(3,5)
c = Line(a,b)
print(c.getLen())




最佳答案
2018-5-4 23:55:55
你这样理解也没有错;
模块化编程还是要正规化

如果这样的话,你也可以不用写Pint类,
或者连Line类也不用写,直接写个计算方法就可以了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-4 23:50:37 | 显示全部楼层
这是我的作业,当时是直接调用的

  1. import math

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


  7. class Line():
  8.     def __init__(self,A,B):
  9.         pass
  10.     def getLen(self):
  11.         length = math.sqrt((A.x-B.x)*(A.x-B.x) + (A.y-B.y)*(A.y-B.y))
  12.         
  13.         print('这条直线的长度是 %d' % length)


  14. A=Point2(1,1)

  15. B=Point2(4,5)

  16. AB = Line(A,B)

  17. AB.getLen()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-4 23:55:55 | 显示全部楼层    本楼为最佳答案   
你这样理解也没有错;
模块化编程还是要正规化

如果这样的话,你也可以不用写Pint类,
或者连Line类也不用写,直接写个计算方法就可以了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-5 00:04:45 | 显示全部楼层
ba21 发表于 2018-5-4 23:55
你这样理解也没有错;
模块化编程还是要正规化

恩 学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-3 12:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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