簡體   English   中英

Python:如果調用setter,調用函數?

[英]Python: Call function if setter is called?

我有一個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

有關詳細信息,請參閱此鏈接: http//snippets.dzone.com/posts/show/954

你在找property()

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

  def _set_address(self):
     ...

  address = property(_get_address, _set_address)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM