Python:调用setter时调用函数?

Python:调用setter时调用函数?,python,object,encapsulation,setter,Python,Object,Encapsulation,Setter,我有一个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" 我希望能够在设置address属性时调用一个函数,该属性将执

我有一个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"
我希望能够在设置
address
属性时调用一个函数,该属性将执行诸如重新格式化地址或查找并添加邮政编码等操作,等等。是否有办法在对象的定义中实现这一点,或者每次我设置
address
属性时,我都必须自己完成吗?


你可能需要的是一个财产概念

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
有关更多详细信息,请参阅此链接:

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