Python静态方法类方法属性方法
Posted 看不尽的尘埃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python静态方法类方法属性方法相关的知识,希望对你有一定的参考价值。
静态方法
使用静态方法以后,相当于把下面的函数和类的关系截断了,它的作用相当于是类下面的一个独立函数,不会自动传入参数self。
class people:
.....
@staticmethod
def xxx():
pass
类方法
只能访问类变量,不能访问实例变量。
@classmethod
class dog: name = "小黑" def __init__(self,name): self.name = name @classmethod def hit(cls): print("%s" % (cls.name)) d1 = dog("小花") d1.hit() #输出 小黑
属性方法
把一个方法变成一个静态属性,调用的时候不需要加括号(d1.hit)。
class dog: def __init__(self,name): self.name = name @property def hit(self): print("%s" % (self.name)) d1 = dog("小花") d1.hit #输出 小花
那么如何给属性方法传入参数呢?
可以看下面的代码,需要加上@hit.setter装饰(必须写在@property下面),且两个函数名保持一致。
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
既然能传参,那么属性方法也是支持删除的。
@hit.deleter def hit(self): del self.__age
以上是关于Python静态方法类方法属性方法的主要内容,如果未能解决你的问题,请参考以下文章
Python高级语法-对象实例对象属性-类与实例,class方法静态方法等(4.6.1)
python 面向对象专题:私有成员类方法静态方法属性isinstance/issubclass
python 面向对象专题:私有成员类方法静态方法属性isinstance/issubclass
Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法