# class Room:
# def __init__(self,name,owner,width,length,heigh):
# self.name=name
# self.owner=owner
# self.width=width
# self.length=length
# self.heith=heigh
# @property #用property修饰静态发属性
# def cal_area(self):
# # print('%s 住的 %s 总面积:%s' % (self.owner, self.name, self.width * self.length))
# return self.width*self.length
# @property
# def volume(self):
# return self.width*self.length*self.length
#
# r1=Room('厕所','jack',100,100,1000)
# r2=Room('公共厕所','mark',10,10,1000)
# # print('%s 住的 %s 总面积:%s' %(r1.owner,r1.name,r1.width*r1.length))
# # print('%s 住的 %s 总面积:%s' %(r2.owner,r2.name,r2.width*r2.length))
#
# print(r1.cal_area)
# print(r2.cal_area)
# print(r1.volume)
# print(r2.volume)
#----------------------------------- 类方法 ------------------------------------
# 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.heith=heigh
# def test(self):
# print('from test', self.name)
# @classmethod #定义类方法.专门给类用的,实例也可惜调用该方法
# def tell_info(cls):
# print(cls)
# print('-->',cls.tag)
#
#
#
# # print(Room.tag)
# # r1=Room('厕所','jack',100,100,1000)
#
# Room.tell_info()
#———————————————————————静态方法———————————————————————————
# staticmethos静态方法只是名义是的归属类管理,不能使用类变量和实例变量,是类的工具包
# 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.heith=heigh
# def test(self):
# print('from test', self.name)
#
# @staticmethod
# def wash(a,b,c):
# print('%s %s %s 正在洗澡' %(a,b,c))
# def test(x,y):
# print(x,y)
#
# r1=Room('厕所','jack',100,100,1000)
# Room.wash('jack','milk','nice')
# print(Room.__dict__)
# print(r1.__dict__)
#静态属性:property把函数封装成一个静态属性的形式,让外部调用的时候,看不到内面的逻辑
#特点:定义一个静态属性,可以定义一个self,self是实例本身。实例可以访问(类和实例)数据属性和函数属性
#类方法:classmethod 可以访问类的属性和函数方法
#静态方法 staticmethod,可以有参数,不是cls也不是self。不能访问类属性与实例属性