2013-04-27 57 views
2

確定這可能很奇怪,但我想聲明一個沒有固定值的變量,但是以某種方式「鏈接」到函數的結果。目標是讓最終用戶操縱變量,但每次使用變量的值時,其值可能會改變。變量值由函數調用

這是當前結果我得到:

from random import randint 

def randomfun(): 
    return randint(1, 100) 

an_int = randomfun 
print an_int # Print the function object 
print an_int() # Print the result of randomfun() 

我想獲得是print an_int實際調用randomfun(),但無需再添加括號,並an_int類型應該是randomfun的返回類型。

+0

我不明白的問題。要聲明一個沒有值的變量,你可以聲明它爲None。以某種方式「相連」是毫無意義的,很難理解你的意思。您可以在範圍內操作變量而不會有任何問題。如果你有時需要改變一個變量,那麼你需要抽象(一個訪問器方法)。你是否試圖讓它有50%的機率致電randfun,並有50%的機會改變價值? – Dmitry 2013-04-27 13:36:48

+0

對不起,我誤解了。 – 2013-04-27 13:39:28

+1

您可能知道這一點,但在程序中遇到像這樣的變量可能會導致一些非常令人沮喪的調試會話。 – Medo42 2013-04-27 13:41:03

回答

4

an_int是一個對象。除非你改變它,它不會改變它的價值。但是,你可以改變物體的表示方式:

from random import randint 

class RandomFun(object): 
    def __str__(self): 
     return str(randomfun()) 

def randomfun(): 
    return randint(1, 100) 

an_int = RandomFun() 
print an_int  
print an_int  

收益率(像)

57 
19 
+0

+1:非常聰明。有沒有什麼方法可以將'an_int'作爲一個整數? – Blender 2013-04-27 13:38:36

+0

聰明的解決方案,符合GuillaumeA明確要求的內容,但可能不符合他實際需要的內容。 – Medo42 2013-04-27 13:38:47

+0

@Blender:我不可以使用int的子類,因爲int是不可變的。 – unutbu 2013-04-27 13:41:25