在python中重新计算var
考虑以下伪代码:在python中重新计算var,python,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()时
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(加1)的随机值,它是由属性中的get()函数生成的。问题是,当我在第3行调用myFunc()时,我从第2行得到了相同的随机值。我是否可以让python在第3行再次启动get()函数以生成一个新的随机值
Meir您的代码(如果编写正确并且我相信是您所希望的)只会在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)
是的,有:
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()
今后,请确保您发布的任何代码都没有语法错误,并且实际执行您所说的操作。如何:
def myFunc():
return random(10)
那代码根本不起作用。请将其重写为一个工作示例。类名拼写错误。除非将get
设为staticmethod
,否则无法在没有参数的情况下创建get
,并且除非手动将类的实例传递给它,否则无法对该类调用实例方法func
不返回可调用的,因此myFunc()
不起作用get
返回None
,这就是传递给func
——不能添加到None
。get()方法不返回任何内容,也不会自行传递。这是您的实际代码吗?random也是未定义的(与明显的random.random.random不同),您不能在lambda中返回,并且属性拼写错误。。将“代码”改为“伪代码!”