您可以在下面的代码中解释__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
答案 0 :(得分:0)
在您的代码中,__setattr__()
函数正在进行验证,即在分配self.gender
的值时,其值应仅在male
和female
之间。如果有任何其他值,则会引发AttributeError
异常。
注意:在__setattr__()
函数中,没有调用super
的{{1}},因此此函数实际上并未更新类的属性。您应在__setattr__
中添加以下行以使其正常工作:
__setattr__()
关于.__setattr__(self, name, value)
的概述:
每当您为类的属性分配任何值时,都会调用super(Human, self).__setattr__(name, value)
函数,其中__setattr__(self, name, value)
是name
的属性,而class
是新值分配。以下是演示以下内容的示例代码:
value