将方法结果作为参数传递给其他方法

时间:2014-01-28 17:46:10

标签: python class methods

我想要一个方法接受另一个方法的结果作为参数:

def method2(self, self.method1(arg_for_method_1))
    pass

但我一直收到错误

NameError: name 'self' is not defined

为什么呢?

2 个答案:

答案 0 :(得分:4)

您正在尝试提供Python期望简单名称的值;该名称将在运行时分配一个值。

由于self已经是一个参数,您可以在self.method1()运行时调用method2

def method2(self)
    x = self.method1()

如果您希望method1设置参数的默认值,请使用None作为默认值。

def method2(self, var=None):
    if var is None:
        var = self.method1()

答案 1 :(得分:3)

class XYZ:
   def some_method(self):
      return math.PI
   def method1(self,x):
      return x**0.5
   def method2(self, method1):# <- this is the argument ... not the value
      print method1()
   def method3(self,some_value):
      print some_value

x = XYZ()
x.method2(x.some_method)
x.method3(x.method1(5))   #<--- you call the method when you pass it not when you define it