1. 程式人生 > >靜態方法和類方法

靜態方法和類方法

英雄 per 初始 ati 出了 class cme turn python

1、類方法:@classmethod

如下例子:

class Hero(object):
	__height = 1     # 英雄高度

	def __init__(self, name, ad, ap):   # 初始化屬性
		self.__name = name
		self.__ad = ad
		self.__ap = ap

	@classmethod
	def set_height(cls, new_height):    # 配置英雄的身高
		cls.__height = new_height

	@property
	def hit_ad(self):          # 返回英雄的傷害
		return self.__ad

	@hit_ad.setter
	def hit_ad(self, va):    # 添加暴擊效果
		self.__ad = self.__ad * va

	@property
	def hero_name(self):
		return self.__name


hero = Hero("chenAdong", 100, 100) 
print "%s 輸出了 %s 點物理傷害" % (hero.hero_name, hero.hit_ad)

>>>chenAdong 輸出了 100 點物理傷害 # 輸出結果

  如上,類方法可以用來修改靜態屬性;

2、靜態方法:@staticmethod

先舉例子:

class Hero(object):
	def __init__(self, name):
		self.__name = name
		print "hero_name: %s" % self.__name

	@staticmethod
	def create_hero():
		Hero("chenAdong")


Hero.create_hero()
>>> hero_name: chenAdong

  如上:在類中,定義方法需要傳給默認參數self,使用靜態方法,則不用,但可以傳其他參數;

靜態方法和類方法