#静态属性的作用是吧类的方法隐藏起来(可以把背后的逻辑隐藏起来),让用户感觉是在电泳属性,而不是方法
class Static:
attribute='属性'
def __init__(self,parameter1,parameter2,parameter3):
self.parameter1 = parameter1
self.parameter2 = parameter2
self.parameter3 = parameter3
def test(self):
return ('test',self.parameter1)
@property
def print_static(self):
print(Static.attribute)
return ('这个是静态属性的结果 %s %s %s'%(self.parameter1,self.parameter2,self.parameter3))
s=Static('hello','world','!')
print(s.test())
print(s.print_static)
静态方法:#静态方法只是名义上归类管理,不能使用类变量和实例变量,是类的工具包
#我个人的理解是扯虎皮做大旗,静态方法只是借用类的大树下的一个独立函数
class Static:
attribute='属性'
def __init__(self,parameter):
self.parameter=parameter
def test(self):
return ('test',self.parameter)
@staticmethod
def print_static(a,b,c):
print(Static.attribute)
return ('这个是静态方法',a+b+c)
s=Static('hello')
print(s.test())
print(Static.print_static(2,4,6))
类方法:'''
@classmethod 类方法是通过类里面的函数调用类本身的属性
'''
class Class():
attribute='类的属性'#类的属性
def __init__(self,parameter): #这里的self是一个对象
self.parameter=parameter #实例的属性
def test(self):
print(self)
return ('类方法测试调用',self.parameter)
@classmethod#类方法只能调用类属性,不能调用实例属性
def print_class(cls): #这里的cls是一个类
print(cls)
return ('通过类调用类的属性',cls.attribute)
x=Class('实例的属性')
print(x.test())
print(x.parameter)
print(Class.print_class())
print(Class.attribute)