Python:如果调用setter,调用函数?

joh*_*ohn 3 python setter encapsulation object

我有一个Python对象,它具有在调用构造函数后设置的某些属性.例如,

def Student(object):
    def __init__(name, address=None):
        self.name = name
        self.address = address

stud = Student("John")
stud.address = "123 Main St. New York, NY"
Run Code Online (Sandbox Code Playgroud)

我希望能够在address设置属性时调用函数,该函数将执行诸如重新格式化地址或执行查找以及添加邮政编码等内容.是否有办法在对象的定义中完成此操作或者我每次设置address属性时都必须自己这样做?

Dan*_*any 7

您可能需要的是财产概念.

class C(object):
  def __init__(self, x):
    self._x = x

  def get_x(self):
    return self._x
  def set_x(self, x):
    self._x = x
  x = property(get_x, set_x)

obj = C(5)
obj.x = 6    # set
print obj.x  # get
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此链接:http://snippets.dzone.com/posts/show/954