Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中重新计算var_Python - Fatal编程技术网

在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中返回,并且属性拼写错误。。将“代码”改为“伪代码!”