重新评估python中的var

时间:2011-09-22 13:27:29

标签: python

考虑以下伪代码:

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()函数以产生新的随机值吗?

梅尔

3 个答案:

答案 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)