靜態方法
使用靜態方法以后,相當於把下面的函數和類的關系截斷了,它的作用相當於是類下面的一個獨立函數,不會自動傳入參數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
