类内部的函数未被调用

时间:2015-10-12 08:41:52

标签: python function

我有一个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,但解决方案表明似乎并不适用于此。

3 个答案:

答案 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 );

});