我開發的簡單應用程序包含所有配置的文件Constants.py,它是這樣蟒到特定表達
x = y
程序的執行,在此期間HAVA變量的結合,Y的值改變時,我希望XO的價值得到太多更新,自動,這可以下文稱結合,我怎麼能做到這一點
我開發的簡單應用程序包含所有配置的文件Constants.py,它是這樣蟒到特定表達
x = y
程序的執行,在此期間HAVA變量的結合,Y的值改變時,我希望XO的價值得到太多更新,自動,這可以下文稱結合,我怎麼能做到這一點
在Python中,變量名指向值。 x=y
告訴Python變量名稱x
應該指向y
當前指向的值。
當您更改y
時,則變量名稱y
指向一個新值,而變量名稱x
仍指向舊值。
你不能用簡單的變量名實現你想要的。
我喜歡KennyTM的建議,將x
定義爲函數,因爲它明確指出x
的值需要運行一些代碼(查找y的值)。
但是,如果你要保持均勻的語法(使所有以同樣的方式訪問的常數),那麼你可以使用與(其中調用getter和setter函數屬性)屬性的類:
常量。 py:
class BunchOConstants(object):
def __init__(self, **kwds):
self.__dict__.update(kwds)
@property
def x(self):
return self.y
@x.setter
def x(self,val):
self.y=val
const=BunchOConstants(y=10,z='foo')
您的腳本。潘岳:
import Constants
const=Constants.const
print(const.y)
# 10
print(const.x)
# 10
在這裏你改變 「常數」 Y:
const.y='bar'
與 「不變」 x過改變:
print(const.x)
# bar
您可以更改x
也
const.x='foo'
and y
也改變了:
print(const.y)
# foo
如果更改值(對象)本身,那麼對它的所有引用將被更新:
>>> a = []
>>> b = a # b refers to the same object a is refering right now
>>> a.append('foo')
>>> print b
['foo']
但是,如果你把名字點到一些其他的對象,那麼其他的名字仍然會引用什麼,他們之前引用:
>>> a = 15
>>> print b
['foo']
這是蟒蛇是如何工作的。名稱只是對象的引用。您可以使用其他名稱引用的同一對象進行名稱引用,但不能使名稱引用其他名稱。使用=
運算符(a = 15
)的名稱歸屬更改a
引用的內容,因此它不會影響其他名稱。
如果你的配置值是一類裏面,你可以做這樣的事情:
>>> class A(object):
... a = 4
... @property
... def b(self):
... return self.a
...
然後,每次訪問B時間,它會返回一個值。
有一個簡單的解決方案,你可以做。只需定義一個屬性並請求您定義的fget
值。
例如:
a = 7
@property
def b():
return a
如果你問B,你會得到這樣的事情<property object at 0x1150418>
但如果這樣做b.fget()
,您將獲得價值7
現在試試這個:
a = 9
b.fget() # this will give you 9. The current value of a
你不需要有這樣的課,否則,我認爲你會需要它。
'def x():return y'? – kennytm 2010-05-18 11:35:34