在 python 属性设置器中传递两个参数

par*_*ola 3 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
Run Code Online (Sandbox Code Playgroud)

在这里您可以使用以下方法获得教授:

myclass = MyClass("sam")

myclass.prof
Run Code Online (Sandbox Code Playgroud)

但我找不到设置 prof 值的方法。

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

mgi*_*son 6

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

instance.property = whatever
Run Code Online (Sandbox Code Playgroud)

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


可以传递一个 2 元组:

myclass.prof = ('one', 'two')
Run Code Online (Sandbox Code Playgroud)

在这种情况下,setter 将传递 2-tuple('one', 'two')作为值。如果这不是您想要的,最好使用普通方法来设置值。例如:

myclass.set_prof(value1, value2)
Run Code Online (Sandbox Code Playgroud)