Python静态方法、类方法、属性方法
静态方法
使用静态方法以后,相当于把下面的函数和类的关系截断了,它的作用相当于是类下面的一个独立函数,不会自动传入参数self。
1 | class people:<br>.....<br> @ staticmethod <br> def xxx():<br> pass |
类方法
只能访问类变量,不能访问实例变量。
1 | @classmethod |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class dog: name = "小黑" def __init__( self ,name): self .name = name @classmethod def hit( cls ): print ( "%s" % ( cls .name)) d1 = dog( "小花" ) d1.hit() #输出 小黑 |
属性方法
把一个方法变成一个静态属性,调用的时候不需要加括号(d1.hit)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class dog: def __init__( self ,name): self .name = name @property def hit( self ): print ( "%s" % ( self .name)) d1 = dog( "小花" ) d1.hit #输出 小花 |
那么如何给属性方法传入参数呢?
可以看下面的代码,需要加上@hit.setter装饰(必须写在@property下面),且两个函数名保持一致。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | class dog: def __init__( self ,name): self .name = name self .__age = None @property def hit( self ): print ( "%s%s" % ( self .name, self .__age)) @hit .setter def hit( self ,age): print ( "Set hit input:" ,age) self .__age = age d1 = dog( "小花" ) d1.hit d1.hit = 11 d1.hit #输出 小花 None Set hit input : 11 小花 11 |
既然能传参,那么属性方法也是支持删除的。
1 2 3 | @hit .deleter def hit( self ): del self .__age |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步