将许多参数传递给python中的构造函数

时间:2015-06-01 18:38:47

标签: python typeerror

我试图将许多参数传递给构造函数,但是当我尝试调用方法时;我有一个错误。我确实实例化了我的课程;但我得到一个错误。我的主要功能是:

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'。

我不是问题所在。

这是我的完整代码

1 个答案:

答案 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__