我正在尝试将参数传递给我想要从类的实例调用的函数,但我不知道该怎么做。我可以做得很好,如果我没有通过任何参数,但第二次我开始通过params它会在我的脸上爆炸。
以下是我想要做的一个例子。
class foo:
def __init__(self, use_function=None):
self.use_function = use_function
def call(self):
self.use_function()
def bar(number):
print 'number is ' + str(number)
myObj = foo( use_function=bar(15) )
myObj.call()
答案 0 :(得分:3)
您无法传递参数,因为您的INSERT INTO MyTable (Col1,Col2,Col3) VALUES
(
SELECT Col1 FROM (SELECT Col1 FROM table1),
SELECT Col2 FROM (SELECT Col2 FROM table2),
SELECT Col3 FROM (SELECT Col3 FROM table3)
)
函数不接受参数,它只接受函数。如果您通过__init__
,则会在 bar(15)
之前调用bar
,并且__init__
会收到{{>> {em>的返回值 1}}(在本例中为None)。
如果您希望__init__
拨打bar(15)
,您可以执行__init__
。这将传递给bar(15)
零参数函数,该函数在被调用时将调用foo( use_function=lambda: bar(15) )
。
答案 1 :(得分:1)
function get_records()
{
$this->db->select("a.criteria_question,a.criteria_answer,a.validation_statement");
$this->db->from("verification_questions as a");
$this->db->join('verification_details as b', 'a.verification_id = b.verification_id');
$query = $this->db->get();
$select = array();
foreach ($query->result() as $row) {
$select[] = $row;
}
if (count($select) > 0)
return $select;
return NULL;
}
答案 2 :(得分:1)
class foo:
def __init__(self, use_function=None):
self.use_function = use_function
def call(self):
eval(self.use_function)
def bar(number):
print 'number is ' + str(number)
myObj = foo( use_function="bar(15)" )
myObj.call()
如果要将参数传递给函数,将函数传递给init
时,可以传递一个字符串bar(15)
,即要调用函数的位置,只需使用内置函数在函数eval
答案 3 :(得分:0)
您可以在bar()
中返回要打印的值class foo:
def __init__(self,use_func=None):
self.u = use_func
def call(self):
print self.u
def bar(n):
return n
myobj = foo(use_func=bar(15))
myobj.call()
所有因为你没有从bar()传递任何东西,myobj得到无