1

項目に属性があるかどうかをチェックし、それらを呼び出すコードを書き込もうとしていました。私は getattr でそれをやろうとしましたが、変更は永続的ではありません。これを確認するために「ダミー」クラスを作成しました。クラスに使用したコードは次のとおりです。


class X:                                         
   def __init__(self):
     self.value = 90  
   def __get(self):   
     return self.value
   def __set(self,value):
     self.value = value  
   value = property(__get,__set)

x = X()
print x.value # this would output 90
getattr(x,"value=",99) # when called from an interactive python interpreter this would output 99
print x.value # this is still 90 ( how could I make this be 99 ? ) 

ありがとう !

4

2 に答える 2

8

次のようなことをする必要があります

class X:                                         
   def __init__(self):
     self._value = 90  

   def _get(self):   
     return self._value

   def _set(self, value):
     self._value = value  

   value = property(_get, _set)

「内部」変数には、プロパティとは異なる名前を付ける必要があることに注意してください (私は を使用し_valueました)。

それで、

setattr(x, 'value', 99)

動作するはずです。

于 2009-01-27T16:59:14.353 に答える
2
getattr(x,"value=",99)

x属性 "value=" (等号に注意) がないため、99 を返します。したがって、getattr は指定されたデフォルト (99) を返します。

于 2009-01-27T17:03:30.850 に答える