一、 初谈
class A(object):
hobby = 'reading' #类变量,类属性为所有实例共享,实例可以访问类变量
def __init__(self,name): # 初始化函数
self.name = name #实例变量,每一个实例独有
self.name = name #实例变量,每一个实例独有
def foo(self):
print(self.name) #实例方法,实例方法只能被实例调用
@staticmethod #静态方法,不使用self或者cls,静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作。类和实例都可以访问!
def static_foo(a,b):
print(a + b)
@classmethod #类方法,将类本身作为对象的操作方法,约定第一个参数为cls;目的是调用类的相关信息。原则上被类调用,但类和实例都可以访问
def class_foo(cls,x):
print(cls.hobby * x)
class B(A):
def hi(self):
super(B,self).foo() #super访问父类方法
print('hi,B')
if __name__ == '__main__':
a = A('lucy') #创建实例a
a.foo() #访问实例方法
print(a.hobby) #访问类方法
a.static_foo(1,2) #访问静态方法
a.class_foo(2) #访问类方法
A.class_foo(2)
b = B('Lily')
b.hi()
结果:
lucy
reading
3
readingreading
readingreading
Lily
hi,B
二、总结
* self.表示一个具体的实例本身,cls表示这个类本身