你能解释一下__setattr__
方法在下面代码中的用法吗
class Human(object):
def __setattr__(self,name,value):
if name == 'gender':
if value in ('male', 'female'):
self.gender = value
else :
raise AttributeError('Gender can only be Male or Female')
h = Human()
h.name = 'Mary'
h.gender = 'female'
print h.gender
在您的代码中,
__setattr__()
函数正在进行验证,在指定self.gender
的值时,它的值应该只在male
和female
之间。如果有任何其他值,它将引发AttributeError
异常。你知道吗注意:在
__setattr__()
函数中,没有对__setattr__
的super
的调用,因此该函数实际上并没有更新类的属性。您应该在__setattr__()
中添加以下行,以便使其正常工作:关于^{} 的概述:
无论何时为类的属性赋值,
__setattr__(self, name, value)
函数都会被调用,其中name
是class
的属性,value
是要赋值的新值。下面是示例代码,用于演示:相关问题 更多 >
编程相关推荐