Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中将参数传递给类方法时出现问题_Python - Fatal编程技术网

在Python中将参数传递给类方法时出现问题

在Python中将参数传递给类方法时出现问题,python,Python,在过去的一周里,我一直在使用Python,在向类方法传递4个参数时遇到了一个问题 以下是在其类中定义的类方法: 这是我在输出中遇到的错误: 我一直想弄明白为什么当我传递4个参数时,解释器是 告诉我我想通过5级考试 我已经并将继续研究这个问题 在此方面的任何帮助都将不胜感激。 谢谢 你的定义中缺少了自我 当一个类方法被称为python时,它将对象引用作为第一个函数参数 def setLineCoordinates(self,x0,y0,x1,y1) def getLineCoordinatesX0

在过去的一周里,我一直在使用Python,在向类方法传递4个参数时遇到了一个问题

以下是在其类中定义的类方法:

这是我在输出中遇到的错误:

我一直想弄明白为什么当我传递4个参数时,解释器是 告诉我我想通过5级考试

我已经并将继续研究这个问题

在此方面的任何帮助都将不胜感激。
谢谢

你的定义中缺少了自我

当一个类方法被称为python时,它将对象引用作为第一个函数参数

def setLineCoordinates(self,x0,y0,x1,y1)
def getLineCoordinatesX0(self):
...

你的定义中缺少了自我

当一个类方法被称为python时,它将对象引用作为第一个函数参数

def setLineCoordinates(self,x0,y0,x1,y1)
def getLineCoordinatesX0(self):
...

您忘记在方法名称中添加self

class Line():
    def setLineCoordinates(self,locx0, locy0, locx1, locy1):
       self.locx0 = locx0
       self.locy0 = locy0
       self.locx1  = locx1
       self.locy1 = locy1

    def getLineCoordinatesX0(self):
        return self.x0

在Python中,自变量的传递必须是显式的,它不是象C++那样隐式的。

你忘记把自己放在方法名中。

class Line():
    def setLineCoordinates(self,locx0, locy0, locx1, locy1):
       self.locx0 = locx0
       self.locy0 = locy0
       self.locx1  = locx1
       self.locy1 = locy1

    def getLineCoordinatesX0(self):
        return self.x0
在Python中,自变量的传递必须是显式的,它不是象C++那样隐式的。

< p>您忘记向类方法的定义中添加Soad。第一个参数(按惯例称为self)包含对对象实例的引用,需要在定义中显式写入,而在调用方法时将隐式添加该参数

def setLineCoordinates(self, locx0, locy0, locx1, locy1):
     etc...
应该会更好。

您忘了将self添加到类方法的定义中。第一个参数(按惯例称为self)包含对对象实例的引用,需要在定义中显式写入,而在调用方法时将隐式添加该参数

def setLineCoordinates(self, locx0, locy0, locx1, locy1):
     etc...

应该工作得更好。

您的函数定义缺少“self”

def setLineCoordinates(self, locx0, locy0, locx1, locy1):
    self.locx0 = locx0
    ....

您的函数定义缺少“self”

def setLineCoordinates(self, locx0, locy0, locx1, locy1):
    self.locx0 = locx0
    ....

仅供参考-这是一个实例方法,而不是类方法。python中有三种方法类型

类方法是接收类对象作为第一个参数的方法 静态方法是一种完全没有上下文的方法 实例方法是接收类的实例作为第一个参数的方法 每种方法类型都有不同的用途和目的。正如其他人所说,您的实例方法缺少self-instance参数。下面是每个方法类型的一个小示例,以及如何调用它们进行比较

class C:
   c_class_var = 1
   def __init__(self):
     self.instance_var = 2

   def instance_method(self):
     print
     print 'instance_method called for object', self
     print 'dir()', dir()
     print 'dir(self)', dir(self)

   @staticmethod
   def static_method():
     print
     print 'static_method called, no context exists!'
     print 'dir()', dir()

   @classmethod
   def class_method(cls):
     print
     print 'class_method called for class', cls
     print 'dir()', dir()
     print 'dir(cls)', dir(cls)

class D(C):
   d_class_var = 3

c_obj = C()
c_obj.instance_method()
C.static_method()
C.class_method()

d_obj = D()
d_obj.instance_method()
D.static_method()
D.class_method()
以下是输出:

instance_method called for object <__main__.C instance at 0x00A706E8>
dir() ['self']
dir(self) ['__doc__', '__init__', '__module__', 'c_class_var', 'class_method', 'instance_method', 'instance_var', 'static_method']

static_method called, no context exists!
dir() []

class_method called for class __main__.C
dir() ['cls']
dir(cls) ['__doc__', '__init__', '__module__', 'c_class_var', 'class_method', 'instance_method', 'static_method']

instance_method called for object <__main__.D instance at 0x00A70710>
dir() ['self']
dir(self) ['__doc__', '__init__', '__module__', 'c_class_var', 'class_method', 'd_class_var', 'instance_method', 'instance_var', 'static_method']

static_method called, no context exists!
dir() []

class_method called for class __main__.D
dir() ['cls']
dir(cls) ['__doc__', '__init__', '__module__', 'c_class_var', 'class_method', 'd_class_var', 'instance_method', 'static_method']

仅供参考-这是一个实例方法,而不是类方法。python中有三种方法类型

类方法是接收类对象作为第一个参数的方法 静态方法是一种完全没有上下文的方法 实例方法是接收类的实例作为第一个参数的方法 每种方法类型都有不同的用途和目的。正如其他人所说,您的实例方法缺少self-instance参数。下面是每个方法类型的一个小示例,以及如何调用它们进行比较

class C:
   c_class_var = 1
   def __init__(self):
     self.instance_var = 2

   def instance_method(self):
     print
     print 'instance_method called for object', self
     print 'dir()', dir()
     print 'dir(self)', dir(self)

   @staticmethod
   def static_method():
     print
     print 'static_method called, no context exists!'
     print 'dir()', dir()

   @classmethod
   def class_method(cls):
     print
     print 'class_method called for class', cls
     print 'dir()', dir()
     print 'dir(cls)', dir(cls)

class D(C):
   d_class_var = 3

c_obj = C()
c_obj.instance_method()
C.static_method()
C.class_method()

d_obj = D()
d_obj.instance_method()
D.static_method()
D.class_method()
以下是输出:

instance_method called for object <__main__.C instance at 0x00A706E8>
dir() ['self']
dir(self) ['__doc__', '__init__', '__module__', 'c_class_var', 'class_method', 'instance_method', 'instance_var', 'static_method']

static_method called, no context exists!
dir() []

class_method called for class __main__.C
dir() ['cls']
dir(cls) ['__doc__', '__init__', '__module__', 'c_class_var', 'class_method', 'instance_method', 'static_method']

instance_method called for object <__main__.D instance at 0x00A70710>
dir() ['self']
dir(self) ['__doc__', '__init__', '__module__', 'c_class_var', 'class_method', 'd_class_var', 'instance_method', 'instance_var', 'static_method']

static_method called, no context exists!
dir() []

class_method called for class __main__.D
dir() ['cls']
dir(cls) ['__doc__', '__init__', '__module__', 'c_class_var', 'class_method', 'd_class_var', 'instance_method', 'static_method']

格式说明:请将代码段等缩进4个空格。谢谢确保类从对象继承。如果不这样做,则使用的是旧式类,这很糟糕。另外需要注意的是:这些函数是实例方法,而不是类方法。格式说明:请将代码段等缩进4个空格。谢谢确保类从对象继承。如果你不这样做,你使用的是老式的类,这很糟糕。另外要注意的是:这些函数是实例方法,而不是类方法。