Python 面向对象静态方法、类方法、属性方法知识点小结
本文实例讲述了Python面向对象静态方法、类方法、属性方法知识点。分享给大家供大家参考,具体如下:
(1)静态方法--》-@staticmethod装饰类中方法
只是名义上归类管理,实际上在静态方法里访问不了类或实例中的任何属性
classDog(object): def__init__(self,name): self.name=name @staticmethod#实际上跟类没什么关系了 defeat(self): print("%siseating%s"%(self.name,'dd')) deftalk(self): print("%sistalking"%self.name) d=Dog("Td") d.eat(d)
(2)类方法-----》 @classmethod装饰类中方法
只能访问类变量,不能访问实例变量
@classmethod defeat(self): print("%siseating%s"%(self.name,'dd'))
(3)属性方法----》@property#attribute装饰类中方法
把一个方法变成一个静态属性
@property#attribute defeat(self): print("%siseating%s"%(self.name)) #调用 Dog("TD").eat
1.需要将一个值传递给eat属性方法-----修改属性值?
存在的问题是变成属性了直接赋值是无法实现的,需要在重新相同的方法,同时将该方法加上@eat.setter进行装饰。
@property#attribute defeat(self): print("%siseating%s"%(self.name,self.__food)) @eat.setter defeat(self,food): print("settofood:",food) Self.__food=food
2.删除属性---同名方法使用 @eat.deleter修饰
@property#attribute defeat(self): print("%siseating%s"%(self.name,self.__food)) @eat.deleter defeat(self): delself.__food
总结:
1.通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法。
2.类方法通过@classmethod装饰器实现,类方法和普通方法的区别是,类方法只能访问类变量,不能访问实例变量。
3.属性方法的作用就是通过@property把一个方法变成一个静态属性,调用时与调用属性的方式相同。
3.1把一个方法变成静态属性的作用:
当某个属性的值是一系列动作后才得到的结果。所以每次调用时,其实它都要经过一系列的动作才返回结果的,但这些动作过程不需要用户关心,用户只关心得到这个属性的值即可,也就是说用户只需要调用这个属性就可以了。
(1)修改属性值
将由@proerty装饰器(把一个方法变成一个静态属性)使用@proerty.setter装饰器再装饰一下,此时你需要写一个新方法(同名),对这个属性值进行更改。
(2)删除属性
#1:将由@proerty装饰器(把一个方法变成一个静态属性)使用@proerty.deleter装饰器再装饰一下,此时你需要写一个新方法(同名)。
#2:使用del删除该实例所对应的属性方法(属性)例如:del对象.属性
源码学习地址:https://gitee.com/FelixBinCloud/PythonLearn/commit/bad7a51da107bec6b2b2db697318a6935847d208
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。