我试图将许多参数传递给构造函数,但是当我尝试调用方法时;我有一个错误。我确实实例化了我的课程;但我得到一个错误。我的主要功能是:
Points = Line(1,1,2,3)
a= Line.slope()
print("slope",a)
在我班上我有
class Line(object):
def __init__(self,X1,Y1,X2,Y2):
self.k1=X1
self.k2=Y1
self.k3=X2
self.k4=Y2
''' Compute the slope of the line'''
def slope(self):
x1, y1, x2, y2 = self.k1, self.k2, self.k3, self.k4
try:
return (float(y2)-y1)/(float(x2)-x1)
except ZeroDivisionError:
# line is vertical
return None
'''Get the y intercept of a line segment'''
def yintercept(self, slope):
if slope != None:
x, y = self.k1, self.k2
return y - self.slope * x
else:
return None
'''Find Y cord using line equation'''
def solve_for_y(self, x, slope, yintercept):
if slope != None and yintercept != None:
return float(slope) * x + float(yintercept)
else:
raise Exception("impossible to get it")
'''Find X cord using line equation'''
def solve_for_x(self, y, slope, yintercept):
if slope != 0 and slope:
return float((y - float(yintercept))) / float(slope)
else:
raise Exception("Imposssible to get it ")
错误有:TypeError:计算缺少1个必需的位置参数:'self'。
我不是问题所在。
这是我的完整代码
答案 0 :(得分:3)
您的现有课程存在一些问题。
class TestClass():
def __init__(self,x1,x2,x3):
self.k1 = x1
self.k2 = x2
self.k3 = x3
def Compute(self):
return self.k1 * self.k2 + self.k3
>>> test = TestClass(2,2,3)
>>> test.Compute()
7
_init_
应为__init__
(请注意双下划线)Compute
方法应使用成员变量k
而不是输入变量x
,因为该范围内不存在x版本Compute
的大写字母不正确。:
声明和class
函数定义__init__