静态
静态属性:把函数封装成数据属性的形式
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正在洗澡