墙角君 发表于 2014-8-11 21:34:11

计算两点距离,,,为什么不能这么写。。

import math as m

class Point (x1,x2,y1,y2):   
    A = (x1,y1)
    B = (x2,y2)
    def getlenght(self,A,B):
      a = m.sqrt(A-B**2 + A-B**2)


报错

Traceback (most recent call last):
File "C:/Users/Administrator/1.py", line 3, in <module>
    class Point (x1,x2,y1,y2):
NameError: name 'x1' is not defined

墙角君 发表于 2014-8-11 21:41:29

import math as m

class Point:
    def __init__ (self,x1,x2,y1,y2):
         self.A = (x1,y1)
         self.B = (x2,y2)
    def getlenght(self,A,B):
      a = m.sqrt(A-B**2 + A-B**2)
      return int (a)

这样呢。。。怎么还是报错。。。

Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
    Q.getlenght()
TypeError: getlenght() missing 2 required positional arguments: 'A' and 'B'

墙角君 发表于 2014-8-11 21:43:26

getlenght 在代码里不是有两个参数了嘛。。。

还有 变量前面加上 self 和不加self有什么区别。。。

jijidata 发表于 2014-8-11 21:48:27

本帖最后由 jijidata 于 2014-8-11 21:49 编辑

墙角君 发表于 2014-8-11 21:41
这样呢。。。怎么还是报错。。。
import math as m

class Point:
    def __init__ (self,x1,x2,y1,y2):
         self.A = (x1,y1)
         self.B = (x2,y2)
    def getlenght(self):
      a = m.sqrt((self.A-self.B)**2 + (self.A-self.B)**2)
      return a

>>> Q = Point(1,2,3,4)
>>> Q.getlenght()
1.4142135623730951


还有你的长度计算的公式错了,少两对括号

墙角君 发表于 2014-8-11 21:51:40

jijidata 发表于 2014-8-11 21:48
还有你的长度计算的公式错了,少两对括号

soga! 谢谢!

高级电工 发表于 2021-4-27 09:57:14

墙角君 发表于 2014-8-11 21:41
这样呢。。。怎么还是报错。。。

get里面不需要再有AB了,不然的话调用get的时候还需要两个参数才行,而且get里面的AB前面要加self.,否则get这个方法没有实例对象的参数传进去,是不能使用的
页: [1]
查看完整版本: 计算两点距离,,,为什么不能这么写。。