静态方法和类方法

Posted chenadong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态方法和类方法相关的知识,希望对你有一定的参考价值。

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,使用静态方法,则不用,但可以传其他参数;




以上是关于静态方法和类方法的主要内容,如果未能解决你的问题,请参考以下文章

python中静态方法(@staticmethod)和类方法(@classmethod)的区别

Python中静态方法和类方法的区别

Python中静态方法和类方法的区别

区分成员变量和类变量,this关键字,封装,静态方法和静态代码块,通通给我看懂(概念版) 后续有相关示例

区分成员变量和类变量,this关键字,封装,静态方法和静态代码块,通通给我看懂(概念版) 后续有相关示例

区分成员变量和类变量,this关键字,封装,静态方法和静态代码块,通通给我看懂(概念版) 后续有相关示例