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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM