python静态属性,静态方法,类方法

#静态属性的作用是吧类的方法隐藏起来(可以把背后的逻辑隐藏起来),让用户感觉是在电泳属性,而不是方法
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)


猜你喜欢

转载自blog.51cto.com/853056088/2132884