14. 类变量与类方法
14.1. 类变量
在类中方法之外定义的变量。
类和实例都可以访问类变量
实例只可以访问,不可以修改
14.2. 实例变量
类实例(对象)可使用的变量,以 self.
开头。
14.3. 实例方法
类实例(对象)可调用的函数,形参包括 self
。
14.4. 静态方法
使用 @staticmethod
装饰,是定义在类内的普通函数。
静态方法不能访问类变量、实例变量、实例方法
类和实例都可以调用静态方法,需要使用
cls
/self
来限定。静态方法调用其他静态方法时,需要使用类名来限定,即
<类名>.<静态方法名>
。
14.5. 类方法
使用 @classmethod
装饰,形参包括 cls
。
类方法可以访问和修改类变量,不能访问实例变量、实例方法
类和实例都可以访问类方法
1class A:
2 var = 100 ## 类变量
3 def __init__(self):
4 self._a = 0 ## 实例变量
5 self.__b = 1 ## 实例变量
6 self.c = 2 ## 实例变量
7
8 def _foo(self):
9 print "_foo"
10
11 def __foo(self):
12 print "__foo"
13
14 def foo(self):
15 self.__foo()
16 print "__b:", self.__b
17 print self.static_func(1, 5)
18
19 @staticmethod
20 def static_func(a, b):
21 print "static_method"
22 return a + b
23
24 @classmethod
25 def class_func(cls, num):
26 print "class_method"
27 cls.var = num
28 print cls.static_func(-1, 1)
29
30 @staticmethod
31 def static_func2(a, b):
32 ## 静态方法调用静态方法
33 return A.static_func(a*b, a/b)
1>>> obj = A()
2>>> print obj.static_func(1,3)
3static_method
44
5>>> A.class_func(200)
6class_method
7static_method
80
9>>> print A.var
10200
11>>> obj.foo()
12__foo
13__b: 1
14static_method
156
14.6. 参考资料
Python-类变量,成员变量,静态变量,类方法,静态方法,实例方法,普通函数
一张图了解 python 类方法与类变量 类变量与实例变量