考虑以下伪代码:
class Atrribute(object):
def __init__(self):
self.value = 0
def get():
self.value = random(10)
def func(var):
lambda var: return var+1
1) myFunc = func(Attribute().get())
2) myFunc()
3) myFunc()
现在,当我在第2行调用myFunc()时,我得到一个0到10(加一)的随机值,它是由Attribute中的get()函数生成的。问题是,当我在第3行调用myFunc()时,我从第2行得到相同的随机值。无论如何,我可以让python在第3行再次启动get()函数以产生新的随机值吗?
梅尔
答案 0 :(得分:3)
是的,有:
import random
class Attribute(object):
def __init__(self):
self.value = 0
def get(self):
self.value = random.random() * 10
return self.value
def func(fn):
return lambda: fn() + 1
att = Attribute()
myFunc = func(att.get)
print myFunc()
print myFunc()
将来,请确保您发布的任何代码都没有语法错误,并且实际执行您所说的内容。
答案 1 :(得分:1)
怎么样:
def myFunc():
return random(10)
答案 2 :(得分:0)
你的代码(如果写得正确并且我相信你的意图)只会在lin 1上调用Attribute.get()一次。然后将返回的值赋给变量'myFunc'。
请改为尝试:
class Atrribute(object):
def __init__(self):
self.value = 0
def get():
self.value = random(10)
def func(var):
return var+1
1) a = Attribute()
2) myFunc = a.get
3) func(myFunc)
4) func(myFunc)