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)

返回 99,因为x没有属性 "value="(注意等号),所以 getattr 返回提供的默认值 (99)。

于 2009-01-27T17:03:30.850 回答