静态

 

静态属性:把函数封装成数据属性的形式

class Room:
    def __init__(self,name,owner,width,length,heigh):
        self.name=name
        self.owner=owner
        self.width=width
        self.length=length
        self.heigh=heigh

    @property       #属性
    def cal_area(self):
        # print('%s住的%s总面积是%s' % (self.owner, self.name, self.width * self.length))
        return self.width * self.length
r1=Room('兰戈','alex',100,100,100)
r1.cal_area

print(r1.cal_area)          #就像是在调用一个普通的数据属性
print(r1.name)

类方法:

class Room:
    tag=1
    def __init__(self,name,owner,width,length,heigh):
        self.name=name
        self.owner=owner
        self.width=width
        self.length=length
        self.heigh=heigh

    @property       #属性
    def cal_area(self):
        # print('%s住的%s总面积是%s' % (self.owner, self.name, self.width * self.length))
        return self.width * self.length

    def test(self):
        print('from test',self.name)

    @classmethod
    def tell_info(cls):
        print(cls)
        print('--->',cls.tag)

print(Room.tag)         #1
r1=Room('兰戈','alex',100,100,100)
Room.tell_info()        #<class '__main__.Room'>
#想不执行任何实例,只执行类方法,不跟实例有任何关系

 静态方法:既不跟类绑定,也不跟实例绑定,不能使用类变量和实例变量,是类的工具包

class Room:
    tag=1
    def __init__(self,name,owner,width,length,heigh):
        self.name=name
        self.owner=owner
        self.width=width
        self.length=length
        self.heigh=heigh

    @property       #属性
    def cal_area(self):
        # print('%s住的%s总面积是%s' % (self.owner, self.name, self.width * self.length))
        return self.width * self.length

    @classmethod
    def tell_info(cls):
        print(cls)
        print('--->',cls.tag)

    @staticmethod
    def shower(a):
        print('%s正在洗澡'%a)
  
Room.shower('alex')                 #alex正在洗澡
r1=Room('兰戈','alex',100,100,100)
r1.shower('alex')                   #alex正在洗澡

 

posted @ 2019-03-21 18:57  wind_y  阅读(139)  评论(0编辑  收藏  举报