我有一个python类和几个函数,第一个调用第二个。然而,第二次永远不会被召唤。此外,_method2()
调用之后的行永远不会执行。
class call_methods():
def _method1(self, context):
print "Now call method 2";
this._method2(context);
print "Finish";
return {}
def _method2(self, context={}):
print "method 2 called"
return {}
输出:
Now call method 2
只出现第一份印刷声明。
问题类似于Function Not getting called,但解决方案表明似乎并不适用于此。
答案 0 :(得分:1)
this._method2(context); ===> self._method2(context)
python中不存在 this
。你必须使用self
。也不需要;
。而是遵循适当的缩进。修改你的第二个函数
def _method2(self, context={}):
答案 1 :(得分:1)
您的名称为this
未定义 ,因此Python会抱怨。您可以更改第二个method
_method2()
以获取参数self
,该参数在Python中是一个约定,表示您已创建并希望引用的类的instance
:
class call_methods:
def _method1(self, context):
print "Now call Method 2"
self._method2(context)
print "finish"
return {}
def _method2(self, context={}):
print "Method 2 Called"
return {}
如果您想使用 类 <的 实例 通过_method2
致电_method1
/ strong>您已创建,您必须在引用该实例的self
调用中再次提供_methdo2()
参数,这已完成 隐式 通过调用self
的{{1}}参数上的函数。
更改后的输出将为:
_method1
P.S:在声明一个类时不需要括号In [27]: cls1 = call_methods()
In [28]: cls1._method1("con")
Now call Method 2
Method 2 Called
finish
Out[28]: {}
,它没有任何区别。您可能需要查看Python 2中的New Style Classes
答案 2 :(得分:0)
应该是:
Array.prototype.map.call( document.querySelectorAll("#new-ul input"), function( element,index ){
console.log( element.value );
});