静态方法
使用静态方法以后,相当于把下面的函数和类的关系截断了,它的作用相当于是类下面的一个独立函数,不会自动传入参数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