zoukankan      html  css  js  c++  java
  • 静态属性、类方法、静态方法

    静态属性:

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

    类方法:

    @classmethod 参数默认为cls-->类 可以访问类属性

    # -------------------------类方法:数据属性和函数属性---------------------
    # 调用时不与任何实例捆绑
    # 类级别的操作 与实例无关 不能访问实例属性
    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参数问题

    静态方法:

    @staticmethod 不能访问类属性和实例属性

    # -----------------------静态方法--------------------
    #
    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()
  • 相关阅读:
    燕之屋燕窝被指97%为糖水和增稠剂 营养价值不如鸡蛋
    烧烤需要准备些什么东西?烧烤步骤
    烧烤材料清单都有什么?
    西雅图华人码农生存实录
    【读书】李建:《读书的“有用”与“无用”》
    孩子,我为什么要求你读书
    读书和不读书差别在哪里?
    招人不是HR第一职责,留住人才是
    select 可输入的下拉框
    toLocaleString 日期
  • 原文地址:https://www.cnblogs.com/gl-gl/p/9205832.html
Copyright © 2011-2022 走看看