class Room: tag=1 def __init__(self,name,owner,width,length,heigh): self.name=name self.width=width self.owner=owner self.length=length self.heigh=heigh
1、静态属性
既可以访问类自己的属性也可以访问实例自己的属性
@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,10000)
#像类一样访问自己的属性,所调用的函数不用加() print(r1.cal_area)
2、类方法
访问不到实例的属性,主要是给类用的
@classmethod#(给类用的) def tell_info(cls,x):#cls参数接收的是类名,类名自动传入第一个参数 print(cls) print('---->',cls.tag,x)#print('---->',Room.tag) # def tell_info(self): # print('----->',self.tag) Room.tell_info(10)
3、静态方法
不能访问类属性和实例属性,只是类的工具包
@staticmethod def wash_body(a,b,c): print('%s %s %s正在洗澡'%(a,b,c)) Room.wash_body('alex','yuanhao','wupeiqi') r1=Room('公共厕所','yuanhao',1,1,10000)#实例(对象)只有数据属性没有函数属性(用于调类的函数属性) r1.wash_body('alex','yuanhao','wupeiqi')