在嘗試為單個屬性設定多個名稱時,我在 python2.7 中的行為有一點問題。
# test class
class Something():
def __init__( self ):
self._data_pack = 1.0
@property
def data_pack( self ):
return self._data_pack
@data_pack.setter
def data_pack( self, value ):
self._data_pack = value
dataPack = data_pack
x = Something()
print( 'data_pack', x.data_pack ) #>>> 1.0
print( 'dataPack', x.dataPack ) #>>> 1.0
在 Python 3
兩者都回傳正確的值 20
x = Something()
#change value
x.data_pack = 20
# # both read correct value
print( 'data_pack', x.data_pack ) #>>> 20
print( 'dataPack', x.dataPack ) #>>> 20
在 Python 2 中
只有 data_pack 回傳新值,dataPack 已損壞
x = Something()
#change value
x.data_pack = 20
# # only data_pack has correct value, dataPack is broken
print( 'data_pack', x.data_pack ) #>>> 20
print( 'dataPack', x.dataPack ) #>>> 1.0
有人可以提供一些方法來確保 OLD python 的行為方式相同嗎?對源類的更改最少,并且沒有“魔術”(第 3 方)模塊。
編輯:添加類派生有助于感謝您的回復
class Something(object):
def __init__( self ):
self._data_pack = 1.0
@property
def data_pack( self ):
return self._data_pack
@data_pack.setter
def data_pack( self, value ):
self._data_pack = value
dataPack = data_pack
uj5u.com熱心網友回復:
添加類派生有助于解決問題感謝(@AKX 和 @Aron_Atilla_Hegedus)
類的東西: >>>>類的東西(物件):
class Something(object):
def __init__( self ):
self._data_pack = 1.0
@property
def data_pack( self ):
return self._data_pack
@data_pack.setter
def data_pack( self, value ):
self._data_pack = value
dataPack = data_pack
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/461237.html
