静态属性:函数
既能够访问实例属性也能够访问类属性(self)工具
1 # --------------静态属性:数据属性----------
2 class Room: 3 def __init__(self,name,owner,width,length,height): 4 self.name=name 5 self.owner=owner 6 self.width=width 7 self.length=length 8 self.height=height 9 @property 10 def area_room(self): 11 print('%s住的%s房间的面积是%s' %(self.name,self.owner,self.width*self.length)) 12 return self.length*self.width 13 r1=Room('大树','501',3,8,5) 14 r2=Room('果果','502',10,10,5) 15 # print('%s住的%s房间面积是%s' %(r1.name,r1.owner,r1.width*r1.length))
16 # r1.area_room()
17 # r2.area_room()
18
19 #封装属性
20 print(r1.area_room) 21 print(r2.area_room) 22 print(r1.name) 23 print(r2.name)
类方法:this
@classmethod 参数默认为cls-->类 能够访问类属性spa
# -------------------------类方法:数据属性和函数属性--------------------- # 调用时不与任何实例捆绑 # 类级别的操做 与实例无关 不能访问实例属性
class Room: tag=1
def __init__(self,r_numb,owner,length,width,heigh): self.r_numb=r_numb self.owner=owner self.length=length self.width=width self.heigh=heigh @classmethod#类方法加classmethod
def tell_info(cls): print('this is a test') print(cls.tag) Room.tell_info()#类调用本身的方法 self参数问题
静态方法:code
@staticmethod 不能访问类属性和实例属性blog
# -----------------------静态方法-------------------- # class Room: def __init__(self,name,owner,width,length,height): self.name=name self.owner=owner self.width=width self.length=length self.height=height @property def area_room(self): return self.length * self.width @classmethod # 类方法加classmethod
def tell_info(cls): print('this is a test') print(cls.tag) # 静态方法:类的工具包 不与类、实例绑定,不能使用类变量和实例变量
@staticmethod def bathe(): print('洗澡') #test()函数无心义
def test(x,y):#实例没办法调用此函数 r1.test(1,2)
print(x+y) # print(Room.__dict__) # r1=Room('102','大树',10,3,4)
Room.bathe()