解释__setattr__的用法

时间:2016-10-09 19:25:54

标签: python

您可以在下面的代码中解释__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

1 个答案:

答案 0 :(得分:0)

在您的代码中,__setattr__()函数正在进行验证,即在分配self.gender的值时,其值应仅在malefemale之间。如果有任何其他值,则会引发AttributeError异常。

注意:__setattr__()函数中,没有调用super的{​​{1}},因此此函数实际上并未更新类的属性。您应在__setattr__中添加以下行以使其正常工作:

__setattr__()

关于.__setattr__(self, name, value) 的概述:

每当您为类的属性分配任何值时,都会调用super(Human, self).__setattr__(name, value) 函数,其中__setattr__(self, name, value)name的属性,而class是新值分配。以下是演示以下内容的示例代码:

value