大家好,我是大爆炸 在介绍property前先介绍property()。 property()构造函数返回property属性。其语法是:property(fgetNone,fsetNone,fdelNone,docNone) property()参数:fget(optional)用于获取属性值,默认为None。fset(optional)用于设置属性值,默认为None。fdel(optional)用于删除属性值。默认为None。doc(optional)包含该属性的文档(docstring)的字符串。默认为None。 property()返回值: property()从给定的getter、setter和deleter返回property属性。如果没有给出参数,property()返回一个不包含任何getter、setter或deleter的基属性属性。如果没有提供doc,property()接受getter函数的文档字符串。 示例1:使用getter、setter和deleter创建属性classPerson:definit(self,name):self。namenamedefgetname(self):print(Gettingname)returnself。namedefsetname(self,value):print(Settingnametovalue)self。namevaluedefdelname(self):print(Deletingname)delself。nameSetpropertytousegetname,setnameanddelnamemethodsnameproperty(getname,setname,delname,Nameproperty)pPerson(Adam)print(p。name)p。nameJohndelp。name 结果:GettingnameThenameis:AdamSettingnametoJohnDeletingname 这里,name被用作私有变量,用于存储Person的名称。 我们还设置:getter方法getname()来获取人员的姓名,setter方法setname()来设置人员的姓名,deleter方法delname()来删除人员的姓名。 通过调用property()方法来设置一个新的属性name。 如程序所示,内部引用p。name调用getname()作为getter,setname()作为setter,delname()作为deleter,通过方法内部的打印输出。 示例2:使用property装饰器 可以使用Python装饰器property来分配getter、setter和deleter,而不是使用property()。classPerson:definit(self,name):self。namenamepropertydefname(self):print(Gettingname)returnself。namename。setterdefname(self,value):print(Settingnametovalue)self。namevaluename。deleterdefname(self):print(Deletingname)delself。namepPerson(Adam)print(Thenameis:,p。name)p。nameJohndelp。name 输出:GettingnameThenameis:AdamSettingnametoJohnDeletingname 这里使用了property装饰器,而不是property()。首先,指定name()方法也是Person的一个属性。这是通过在getter方法之前使用property来实现的。接下来,使用属性名来指定setter和deleter。这是通过使用name完成的。name。setter用于setter方法,name。deleter用于deleter方法。 在定义getter、setter和deleter时,使用了相同的方法name()。现在,无论何时使用p。name,它都会在内部调用相应的getter、setter和deleter。