静态属性、类方法、静态方法

静态属性:函数

  既能够访问实例属性也能够访问类属性(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()