[b0016] python 归纳 (二)_静态方法和类方法

# -*- coding: UTF-8 -*-
"""
测试 类的静态方法,类方法
@staticmethod
@classmethod

总结:
1. self 指向类对象, cls 指向类,两个名字都可以随意取,一般取大家公认的这个两个
2. staticmethod 方法体可以调用 同类的 类.类属性、 类.静态方法、类.类方法
               类外可以调用  类.静态方法
3. classmethod  方法体可以条用 同类的 cls.类属性、cls.静态方法、cls.类方法
               当然也可以通过        类.类属性、 类.静态方法、类.类方法
               类外可以调用  类.类方法
4. 类属性(company)调用范围为全部
                类外      类.类属性
                实例方法  self.类属性
                静态方法  类.类属性
                类方法    cls.类属性|类.类属性

"""
class Washer:
    company = "lilei"
    def __init__(self,water=10,scour=2):
        self._water = water
        self.scour = scour
        self.year = 2010

    @staticmethod
    def spins_ml2(spins):
        print "ml2"

    @staticmethod
    def spins_ml(spins):
        print(Washer.company)
        Washer.get_washer2(2)
        Washer.spins_ml2(5)


    @classmethod
    def get_washer2(cls,params):
        # print "washter2"
        pass

    @classmethod
    def get_washer(cls,water,scour):
        # print Washer.company
        # print cls.company
        # print cls.get_washer2(2)
        pass

        print cls.company
        cls().start_wash()      #通过cls获得实例对象 调用实例方法

        # print("comany:",Washer.company)
        # print('year:',self.year)
        # return  cls(water,cls.spins_ml(scour))

    def start_wash(self):
        print  "hello"


    def start_wash2(self):
        """实例方法中,调用类的静态、类方法"""
        Washer.get_washer2(2)
        self.get_washer2(2)
        Washer.spins_ml2(5)
        self.spins_ml2(5)
        print self.company
        print Washer.company

if __name__ == '__main__':
    # print(Washer.spins_ml(8))
    #
    # print(w.spins_ml(8))
    # w = Washer(200,Washer.spins_ml(9))
    # w.start_wash()

    # case 1  静态方法
    print "-----1"
    Washer.spins_ml(5)

    # case 2  类方法
    print "-----2"
    Washer.get_washer(100,9)
    print Washer.company

    # case 3  实例方法
    print "-----3"
    w = Washer()
    w.start_wash2()

"""
Out:
-----1
lilei
ml2
-----2
lilei
hello
lilei
-----3
ml2
ml2
lilei
lilei
"""

 

posted @ 2018-08-31 07:34  sunzebo  阅读(200)  评论(0编辑  收藏  举报