本文实例讲述了Python 面向对象静态方法、类方法、属性方法知识点。分享给大家供大家参考,具体如下:
(1)静态方法--》-@staticmethod
装饰类中方法
只是名义上归类管理, 实际上在静态方法里访问不了类或实例中的任何属性
class Dog(object): def __init__(self,name): self.name = name @staticmethod #实际上跟类没什么关系了 def eat(self): print("%s is eating %s" %(self.name,'dd')) def talk(self): print("%s is talking"% self.name) d = Dog("Td") d.eat(d)
(2)类方法-----》 @classmethod
装饰类中方法
只能访问类变量,不能访问实例变量
@classmethod def eat(self): print("%s is eating %s" %(self.name,'dd'))
(3)属性方法----》 @property #attribute
装饰类中方法
把一个方法变成一个静态属性
@property #attribute def eat(self): print("%s is eating %s" %(self.name)) # 调用 Dog("TD").eat
1.需要将一个值传递给eat属性方法-----修改属性值?
存在的问题是变成属性了直接赋值是无法实现的,需要在重新相同的方法,同时将该方法加上@eat.setter
进行装饰。
@property #attribute def eat(self): print("%s is eating %s" %(self.name,self.__food)) @eat.setter def eat(self,food): print("set to food:",food) Self.__food=food
2.删除属性---同名方法使用 @eat.deleter
修饰
@property #attribute def eat(self): print("%s is eating %s" %(self.name,self.__food)) @eat.deleter def eat(self): del self.__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程序设计有所帮助。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。