Python静态方法类方法属性方法

Posted 看不尽的尘埃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

  

 

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

Python高级语法-对象实例对象属性-类与实例,class方法静态方法等(4.6.1)

python 面向对象专题:私有成员类方法静态方法属性isinstance/issubclass

python 面向对象专题:私有成员类方法静态方法属性isinstance/issubclass

Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法

Python之路-面向对象&继承和多态&类属性和实例属性&类方法和静态方法

python学习第七周之静态方法类方法属性方法和一些类的成员方法