Python:在实例化期间传递参数

时间:2015-12-16 13:35:28

标签: python

我有一个名为" data-packet"如下所示。我试图实例化它,以便我可以使用方法connect('#username#','#password#','t3://localhost:#adminport#') serverRuntime() cd ('JDBCServiceRuntime/AdminServer/JDBCDataSourceRuntimeMBeans/#datasource_name#') invoke('shutdown',objectArray, stringArray) invoke('start',objectArray, stringArray) getAcc返回的值。我还在" main"中包含了创建data_packet类实例的代码。 我收到了这个错误:

getRot

我的假设是实例将Traceback (most recent call last) mydata = data_packet() TypeError: __init__() takes exactly 2 arguments (1 given) 传递给名为self的参数,但没有任何内容传递给l。如果我是对的,我该如何解决这个错误?

mydata

2 个答案:

答案 0 :(得分:1)

从代码和回溯中可以看出答案非常明显:你的data_packet类采用必需的参数l(即" L"小写 - 标识符1永远不要使用...) - 显然是list FWIW - 你不会通过。

注意:self是当前实例并自动传入。

答案 1 :(得分:1)

对象方法中的self是对实例化对象的引用。通过点表示法调用方法时,例如mydata.getAcc(),对象自动作为第一个参数传递。更明确的实现方法是通过类调用方法:data_package.getAcc(mydata)

__init__在对象实例化时自动调用,但否则它的工作方式相同。写作data_package()可以想象为data_package.__init(new_object)。 但是,在类定义中,您为l定义了第二个参数__init。您的对象实例化应为data_package(l),这样,l将作为其第二个参数传递给__init__。即data_package.__init(new_object, l)