如果调用另一个方法,如何检查一个方法?

时间:2014-10-15 18:20:52

标签: python

调用方法c时,有没有办法执行方法b。即,如果调用方法b,则返回方法c中的某些内容。但是如何检查方法是否被调用?

Class A:

    def __init__(self, arg1):
       return self.arg1
    def b(self, arg2):
       return self.arg2

    def c(self):
        # I want to know when method b is called 
        # so I can execute suite inside c.  
        # Is there anyway to do this
        # for example if method b is called return True, else if return something else. 

3 个答案:

答案 0 :(得分:1)

  

当调用方法b时,是否还要执行方法c?

绝对!你只需要从b中调用c。

class A:
    def __init__(self, arg1):
        self.arg1 = arg1
    def b(self, arg2):
        self.c()
        return self.arg1 * 16 + arg2
    def c(self):
        print "c is being called!"

foo = A(23)
foo.b(42)

现在,每次拨打b时,方法c也会被执行。


(顺便说一下,__init__不允许返回None以外的任何内容,而self.arg2不存在,所以我更改了一些方法)

答案 1 :(得分:0)

您是否要在调用c时准确致电b?或者,当您致电c时,请检查是否已拨打b

如果您希望在调用c时调用b,请调用它

def b(self, arg2):
    self.c()
    ### rest of b

如果您只想标记b被调用,您可以在成员类跟踪中添加成员变量,将其初始化为False并在调用True时将其设置为b 1}}

答案 2 :(得分:0)

我不知道我的问题是否正确,但您可以在Python中将函数作为参数传递。例如:

def square(x):
    return x ** 2

def cube(x):
    return x ** 3

def print_a_function_result(a_function, x):
    return a_function(x)

>>> print_a_function_result(square, 2):
>>> 4
>>> print_a_function_result(cube, 2):
>>> 8
>>> print_a_function_result(square, 3):
>>> 9
>>> print_a_function_result(cube, 3):
>>> 27