我有一个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
属性时都必须自己做?
答案 0 :(得分: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
答案 1 :(得分:3)
您正在寻找property()
。
def Student(object):
def _get_address(self):
...
def _set_address(self):
...
address = property(_get_address, _set_address)