在python属性setter中传递两个参数

时间:2016-07-07 20:00:13

标签: python class

class MyClass(object):
   def __init__(self, name):
     self.name = name
     self._prof = None
     self._ischanged = False

   @property 
   def prof(self):
     if not self._prof:
        self._prof = "Sample Prof"
     return self._prof

   @prof.setter
   def prof(self, value, anothervalue):
      pass

在这里,您可以使用以下方式获取教授:

myclass = MyClass("sam")

myclass.prof

但是我找不到设置教授值的方法。

在上面的代码中,我如何将两个值传递给prof?

1 个答案:

答案 0 :(得分:2)

您无法将两个值传递给setter。当你这样做时:

instance.property = whatever

python使用instance(作为self)和whatever作为参数调用setter。

可以传递一个2元组:

myclass.prof = ('one', 'two')

在这种情况下,setter将传递2元组('one', 'two')作为值。如果那不是您想要的,那么最好使用vanilla方法来设置值。 e.g:

myclass.set_prof(value1, value2)