调用方法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.
答案 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