一、静态变量和静态方法
1、静态变量和静态方法都属于类的静态成员,它们与普通的成员变量和成员方法不同,静态变量和静态方法只属于定义它们的类,而不属于某一个对象。
2、静态变量和静态方法都可以通过类名和对象进行访问。
二、静态变量示例
class StaticMenthod: count = 0 #静态变量,不需要显示的声明
def __init__(self):
StaticMenthod.count += 1
def __del__(self):
StaticMenthod.count -= 1
sMenthod = StaticMenthod() #创建对象实例
sMenthod.count += 1 #通过对象实例操作静态变量
print(“sMenthod:%d”%(sMenthod.count)) #通过对象实例调用静态变量
print(“StaticMenthod:%d”%(StaticMenthod.count)) #通过类名调用静态变量
运行结果如下:
通过上面的测试结果可以看出通过对象实例访问静态变量和通过类名访问静态变量的结果是不一样的,由此也证明了通过对象访问实例和通过类名访问实例是互相不干扰的。
三、静态方法
1、静态方法相关描述
1》、静态方法中不需要传入self参数,因此无法访问在静态方法中访问静态实例变量。
2》、静态方法中不可以直接访问类的静态变量,但可以通过类名引用静态变量。
3》、可以通过装饰符定义静态变量。
2、静态方法示例
class StaticFunc: str = “this is static variable!” @staticmethod def static_func(): print("this is static function!") StaticFunc.static_func() sFunc = StaticFunc() sFunc.static_func() print(StaticFunc.str)
运行结果如下:
通过结果分析可以知道:通过对象名调用静态方法和通过类名调用静态方法的结果是没有什么区别的。
Python----静态变量
首先,Python语言并不支持静态变量。因为Python是动态语言,不存在完全静态的变量。
Python中,静态成员变量称为类变量,非静态成员变量称为实例变量
理解下面的代码,分析为什么结果不同
class Jingtai(object):
Count = 0
Ja1 = Jingtai()
Ja2 = Jingtai()
Ja2.Count = 1
print(Ja2.Count,Ja1.Count)
#结果:1,0
看明白了吗?class Jingtai(object)的类变量Count的值并没有被Ja2.Count = 1这一行代码改变,类变量Count依然是0,而对象Ja2继承类的变量Count创建了一个新的Count,然后赋值为1.
所以这里的类变量就是个静态变量。
那么能不能改变类变量的值呢?
可以通过类名来改变类变量的值吗?
class Lei(object): Count = 0
AB1 = Lei()
AB2 = Lei()
Lei.Count = 100 print(AB1.Count,AB2.Count)# 结果:100 100。
使用getter和setter
class Lei(object):
Count = 0
def get_count(self):
return Lei.Count
def set_count(self,item):
Lei.Count = item
AB1 = Lei()
AB2 = Lei()
AB1.set_count(9)
print(AB1.get_count(),AB2.get_count())
#结果:9 9