我有一个类,我想初始化一些变量,然后在其他函数中使用它们。在
class TamAccConnect2:
def __init__( self ):
self.deviceName = []
def func1(self):
device1 = 567;
self.deviceName = 56756
self.device = device1;
print('No, you called me!')
def ReadCurrentData():
errorCode = 1;
return errorCode;
>>> TamAccConnect2.func1()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: func1() missing 1 required positional argument: 'self'
为什么我会遇到这样的错误,我用类似的方式创建了其他类,它们都很好。在
不能对类本身调用实例方法;必须创建一个实例,然后在该实例上调用该方法:
当您试图调用另一个方法
ReadCurrentData
时,您将遇到一个类似但相反的问题。因为您没有给它一个self
参数,当您试图在一个实例上调用它时,您将得到一个TypeError
关于太多的参数,而不是太少。(另外,看起来您可能希望ReadCurrentData
更新类、实例或全局变量,而不是只创建一个局部变量,该变量在方法完成后立即消失。)在这里,如果这是python2.x,您应该始终通过显式继承
object
-例如,class TamAccConnect2(object):
来定义新样式的类。在很难在SO答案中比在教程中更好地解释所有这些,所以请重新阅读官方教程中关于Classes的部分,或者您正在学习的任何其他教程或文本。在
如果你用类似的方式创建了其他类,它们就不好了。您可能因为其他错误而逃脱了惩罚(例如,您在不该传递参数的时候传递了参数,并且该方法从未使用过它的
self
,或者使用它的方式碰巧与您传递的参数一起工作),但它实际上并没有按预期工作。在如果您想知道错误消息的确切原因是这样的,那就有点复杂了。我试图写一个温和的解释here,但我怀疑还是很难理解。总之,简而言之,您没有传递一个参数来匹配
self
参数,也没有调用一个绑定方法,该方法会自动将它绑定到的对象作为参数传递给与self
参数匹配的参数,因此会出现一个错误,说您缺少self
参数。在相关问题 更多 >
编程相关推荐