2011-07-28 58 views
3

我有一個Python對象,它具有某些在調用構造函數後設置的屬性。例如,Python:調用setter的調用函數?

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屬性時我都必須自己做這件事?

回答

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 

請參閱此鏈接瞭解詳情:http://snippets.dzone.com/posts/show/954

3

您正在尋找property()

def Student(object): 
    def _get_address(self): 
    ... 

    def _set_address(self): 
    ... 

    address = property(_get_address, _set_address)